---------------------- android培训 、java培训 、期待与您交流! ----------------------
泛型:JDK1.5版本后出现的新特性,用于解决安全问题,是一个安全机制。
好处
1 将运行期出现的问题ClassCastException,转移到运行期。方便程序员解决问题,让运行期问题减少
2 避免强制转换
泛型格式:通过<>来定义要操作的引用数据类型。
泛型类:当类中要操作的引用数据类型不确定的时候,可以定义泛型类。
在类名后面加参数,以后就可以传入的实际类型进行泛型的限定。
将泛型定义在类上
public class MyClass<T>{
public void add(T t){
}
}
泛型类定义的泛型,在整个类中有效,如果方法被使用,那么泛型类的对象
明确操作的具体类型后,所有要操作的类型就已经固定
为了让不同方法可以操作不同类型,而且类型还不确定,那么可以将泛型定义在方法上
将泛型定义在方法上
public class MyClass{
public <T> void add(T t){//泛型类型放在返回类型前面
}
}
特殊之处:静态方法不可以访问类上定义的泛型,如果静态方法操作的引用数据类型不确定
可以把泛型定义在方法上
泛型定义在接口上
public interface Interface1<T> {
public void add(T t);
}
实现的时候知道操作什么数据类型,如String
public class Zi implements Interface1<String>{
public void add(String t) {
}
}
实现的时候不知道操作什么数据类型
public class Zi<T> implements Interface1<T>{
public void add(T t) {
}
}
泛型类型也可以用 ? 通配符来代替
泛型限定:
<? extends E>:可以接受E类型或者E的子类类型。 向上限定
<? super E>: 可以接受E类型或者E的父类类型。 向下限定
---------------------- android培训 、java培训 、期待与您交流! ----------------------