1.什么是泛型
- 泛型提供了编译时类型安全监测机制,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数。
2.泛型的使用
-
泛型类
public class Generic<T> { private T key; public Generic(T key) { this.key = key; } public void setKey(T key) { this.key = key; } public T getKey() { return key; } }
-
泛型接口
public interface Generator<T> { public T next(); }
-
泛型方法
public <T> T genericMethod(Class<T> tClass){ T instance = tClass.newInstance(); return instance; }
-
泛型的通配符与上下限
<?>:类型通配符一般是使用?代替具体的类型实参 <? extends T>:extends 关键字声明了类型的上界,表示参数化的类型可能是所指定的类型,或者是此类型的子类 <? super T>:super 关键字声明了类型的下界,表示参数化的类型可能是指定的类型,或者是此类型的父类
3.泛型的类型擦除
- 当编译器对带有泛型的java代码进行编译时,它会去执行类型检查和类型推断,然后生成普通的不带泛型的字节码