泛型的本质是参数化类型,是Java的一颗语法糖。语法糖并不会实质性的功能改进,但它能提高编码的效率,或者提升语法的严谨性。
在泛型没有出现之前,我们使用一些模板,都是通过Object类来进行强转,然而在编译期是不知道是否强转成功的,只有在运行期才知道具体的类型,这就增加了程序员犯错的概率。
泛型只是在编译器的一种语法规则,在经过编译器编译之后的代码中任然是用的强转。所以说java的泛型是一种假泛型。这种机制叫做“泛型擦除”。
泛型方法
- 在一个类中,可以包含参数化的方法,这个类可以是泛型类,也可以不是,也就是说泛型方法不受类的限制。
- static方法需要泛型能力,必须成为泛型方法。应为泛型是编译器会擦除的,static方法只和类有关,在类加载时就会存在,和对象无关的。