1.Java中的泛型是什么?使用泛型的好处是什么?
泛型就是指在类定义时不会设置类中的属性或方法参数的具体类型,而是在类使用时(创建对象)再进行类型的 定义。会在编译期检查类型是否错误。
因为Object类是所有类的父类,在具体使用时需要进行强制类型转换。在进行强制类型转换时,开发者必须明确知道实际参数的引用类型,否则可能引起类型转换错误,在编译期无法识别这种错误,只能在运行期检测这种错误。
而使用泛型在编译期就能够检测类型是否安全,同时所有强制性类型转换都是自动和隐式进行的,提高了代码的安全性和重用性。
2.什么是类型擦除?
类型擦除(Type Erasure)是Java泛型的一种实现机制。它指的是在编译时,Java编译器会将泛型类型参数(如T、E等)替换为其限定类型(bounded type)或者Object类型,并在必要的地方插入类型转换代码。这使得泛型代码能够与没有泛型的Java虚拟机(JVM)兼容。
类型擦除的过程如下:
将泛型类型参数替换为限定类型或Object。如果泛型类型参数有限定类型(如),则替换为限定类型;否则,替换为Object类型。