1、什么是泛型
Java泛型(generics)是JDK5中引入的一个新特性。
本质就是万能类型。我们定义引用类型的变量需要指定其是什么Class的,使用泛型就可以代替其Class的作用!泛型不支持基本类型。使用时可能会自动装箱!
2、泛型好处
下面是ArrayList的源码
public class ArrayList<E> extends AbstractList<E>
我们看到:创建ArrayList集合需要我们指定集合元素的类型。我们在集合添加元素的时候,就不能添加与此类型没有直接关系的元素了。所以泛型的好处是:提供了编译器的错误检测。
3、泛型类
public class FanXingClass<T> {
private T t;
public FanXingClass(T t) {
this.t = t;
}
}
使用泛型类
String s = "Hello!";
FanXingClass fanXingClass = new FanXingClass(s);
FanXingClass<String> fanXingClass1 = new FanXingClass<>(s);
泛型使用无参构造的时候,泛型认定为Object!
子类是泛型类的话,子类和父类的泛型类型要一致
4、泛型接口
public interface Generator<T> {
T getKey();
}
public class Pair<T,E> implements Generator<T> {
private T key;
private E value;
public Pair(T key, E value) {
this.key = key;
this.value = value;
}
@Override
public T getKey() {
return key;
}
public E getValue() {
return value;
}
}
泛型其实没什么直接用处,我就不一点点记录笔记了。只记录重点内容,与常见的泛型使用场景
泛型擦除
编译期的泛型T,在JVM的字节码转换为对应的类型,大部分没声明的都会被被转换为Object!
还没有评论,来说两句吧...