1.泛型的自动推断
等号右边的尖括号内的内容可以省略。如下句:Map<Integer,Double> m=new HashMap<>();//等效于Map<Integer,Double> m=new HashMap<Integer,Double>();需要新版 jdk 支持。
2.擦除
java的泛型是通过擦除来实现的。这意味着当你在使用泛型时,任何具体的类型信息都被擦除了,你唯一知道的就是你在使用一个对象。
因此List<String>和List<Integer>在运行时事实上是相同的类型。它们都被擦除成它们的“原生”类型,即List。见下面的代码。
图2-1的代码也是编译不通过的。
图2-1:擦除导致的函数冲突
对比三个源文件。
3.泛型方法
泛型不仅可以用到整个类上,也可以用在一个函数中。也就是说,是否拥有泛型方法,与其所在的类是否是泛型没有关系。泛型还可以应用于内部类及匿名内部类。
代码4:泛型函数
4.泛型接口的实现
参考代码: