java泛型(黑马程序员)

本文介绍了Java泛型的基础概念,包括如何定义泛型类、泛型接口及泛型方法,并解释了泛型的主要用途是在编译时检测错误。此外,还讨论了泛型使用时需要注意的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

------- android培训、java培训、期待与您交流! ----------

在jdk1.5之后java出现了泛型,允许定义泛型类,接口,方法。

例如Comparable接口:

	 //在1.5之前的定义,是用Object来接受的。
	 public interface Comparable{
	 	public int CompareTo(Object o)
	 }
	//有了泛型之后:
	 public interface Comparable<T>
	 {
	 	public int CompareTo(T t)
	 }

由上面可以感到泛型的区别,当然泛型的主要作用是:可以在编译时检测出错误!

1.如何定义泛型类呢?如下:

class person<T>
{
	person()
	{		
	}
	public void sayhi(T t)
	{
		System.out.println(t+"hi");
	}
}

也就是说在定义为泛型类时候,所有类中的T都可以是使用T相应的值。要区别的是泛型方法的定义!

2.如何定义泛型接口?如下

interface person<T>
{
	public void sayhi(T t);
}

· 3.如何定义泛型方法?如下

	 public <E> void print(E e)
	 {
	 	System.out.println(e);
	 }

在泛型方法中要注意返回值类型前的<E>!区别于泛型类。

------------------------------------------------------------------------------

在泛型中也有许多要注意的问题:

1.当你的GenericDemo<T>为一个泛型类的时候,你的构造方法用不用加<T>?不用!为GenericDemo()不加泛型类型!

2.泛型可以有多个参数<E,E1,E2>

3.非受限的类型<T>和<T extends Object>一样!

4.通配符? 可以接受任意类型!

? extends E    表示接受E类型或E的子类型!

? super     E    表示接受E的父类型!

5.尽管Integer为Object的子类型,但是GenericDemo<Integer>不是GenericDemo<Object>的子类型!

要注意的一点是什么时候不能用泛型:

1.在静态环境下,不可以用泛型!

2.在异常类中不可用泛型!

无论怎么样,都由于泛型的特殊实现方式决定的:泛型是使用一种类型消除的方法实现的!编译器使用泛型类型信息,来编译。但是之后消除他!因此,在运行时是没有泛型的信息的!

在think in java中写道:

java容器缺陷,和泛型作用:

1.对象引用加入容器的时候丢了类型信息!

2.由于丢失了类信息,所以要类型转换,转为正确类型!

------- android培训、java培训、期待与您交流! ----------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值