泛型

来源:互联网 发布:acl拆分盘源码 编辑:程序博客网 时间:2024/06/05 11:23

泛型

泛型:

 

集合中存储了不同类型的对象,取出时,容易在运行时时期发生ClassCastException类型转换异常。

 

为了避免这个问题的发生。

 

如果在存储的时候就明确了集合要操作的数据类型,这样取出就没有问题了

 

就需要在定义集合时,就立刻明确元素的类型。

其实借鉴于数组。

 

可以通过<>来明确元素的类型。

 

泛型的好处:

1,将运行时期出现的ClassCastException问题,转移到了编译时期。

2,避免了强制转换的麻烦。

 

泛型其实是JDK1.5版本以后出现的一个安全机制。

 

泛型其实给编译器使用的。

 

泛型的表现形式就是<>

 

编码时,什么时候使用泛型呢?

 

只要用到的类或者接口的旁边有<>时,就要明确具体类型。

 

泛型的使用其实就是 给<>传递实际参数,而这个参数就是一个具体引用数据类型。

 

 

什么时候使用泛型类呢?

当类要操作的引用数据类型不确定的时候,可以使用泛型来定义,

也就是定义一个类型参数。

具体要操作什么类型的对象,有使用该类的使用者来明确,将具体的类型做为实际参数传递给<>.

 

 

当泛型定义在类上。该泛型作用于整个类。

当该建立对象时,就明确了具体类型。

那么凡是使用了类上定义的泛型的方法,操作的类也就固定了。

 

可以将泛型定义在方法上。

泛型方法。

 

 

当类中定义static方法时,静态方法是不可以直接方位类上的泛型,

因为类上的泛型只有通过建立对象才可以明确具体类型。 

 

所以静态方法如果操作的引用数据类型不确定,只能将泛型定义在方法上。

 

在静态方法上定义泛型,必须定义在static关键字之后。

 

 

当方法中操作的应用数据类型不确定,而且和对应的对象执行的类型也不一定一致。

这时就将泛型定义在方法上。

 

泛型:通配符:?  代表任意类型。

 

定义集合要保证左右两边的类型一致。

//两边只有一边定义泛型,也是可以支持,至少新老版本兼容。但是一样会出现,安全提示信息。

 

泛型的限定:

? extends E:接收E类型或者E的子类型。

super E:接收E类型或者E的父类型。

 

 

0 0