这篇Java教程基于JDK1.8。教程中的示例和实践不会使用未来发行版中的优化建议。
为什么要用泛型
简而言之,泛型支持在定义类、接口和方法时将类型(类和接口)作为参数。与方法声明中使用的更常见的形式参数非常相似,类型参数为你提供了一种方法,可以在不同的输入中重用相同的代码。不同之处在于,形式参数的输入是值,而类型参数的输入是类型。
使用泛型的代码比非泛型代码有很多好处:
- 编译时强类型检测
Java编译器对泛型代码应用强类型检查,如果代码违反类型安全,就会报告错误。修复编译时错误比修复运行时错误更容易,后者很难找到。 - 消除强制类型转换
下面未使用泛型的代码片段需要强制类型转换:
当使用泛型来重写这段代码,就不需要强制类型转换:List list = new ArrayList(); list.add("hello"); String s = (String) list.get(0);
List<String> list = new ArrayList<String>(); list.add("hello"); String s = list.get(0); // no cast
- 使程序员能实现通用算法
通过使用泛型,程序员可以实现在不同类型集合上工作的通用算法,可以进行自定义,并且是类型安全且易于阅读的。