当将一个对象放入集合中,集合不会记住此对象的类型,当再次从集合中取出此对象时,改对象的编译类型变成了Object类型,但其运行时类型任然为其本身类型。
因此取出集合元素时需要人为的强制类型转化到具体的目标类型,但是很容易出现
ClassCastException异常
那么有没有什么办法可以使集合能够记住集合内元素各类型,且能够达到只要编译时不出现问题,运行时就不会出现java.lang.ClassCastException异常呢?
答案就是使用泛型,可以将运行时的类型检查搬到编译期实现
泛型是jdk5引入的类型机制,就是将类型参数化。泛型作为一种安全机制而产生
泛型机制将类型转换时的类型检查从运行时提前到了编译时,使用泛型编写的代码比杂乱的使用object并在需要时再强制类型转换的机制具有更好的可读性和安全性。
泛型在本质上是指类型参数化。所谓类型参数化,是指用来声明数据的类型本身,也是可以改变的,它由实际参数来决定。在一般情况下,实际参数决定了形式参数的值。而类型参数化,则是实际参数的类型决定了形式参数的类型。
在声明List
public interface List
这里的<>中的内容就是类型参数,一般建议使用T或者E之类的全大写
{