且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

泛型

更新时间:2022-08-22 22:16:00

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.泛型接口的实现

参考代码: