在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。 它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCastException。
泛型的作用
概括地说,泛型支持类型(类和接口)在定义类、接口和方法时作为参数。就像在方法声明中使用的形式参数,类型参数提供了一种输入可以不同但代码可以重用的方式。所不同的是,形式参数的输入是值,类型参数输入的是类型参数。
泛型的本质就是“数据类型的参数化”。 我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。
泛型的好处
使用泛型对比非泛型代码有很多好处
- 在编译时更强的类型检查。
如果代码违反了类型安全,Java 编译器将针对泛型和问题错误采用强大的类型检查。修正编译时的错误比修正运行时的错误更加容易。
- 消除了强制类型转换。
没有泛型的代码片需要强制转化
List list = new ArrayList();
list.add("hello");
String s = (String) list.get(0);
- 使编程人员能够实现通用算法。
通过使用泛型,程序员可以实现工作在不同类型集合的通用算法,并且是可定制,类型安全,易于阅读。