• Java中的泛型是什么?使用泛型的好处是什么?

    在集合中存储对象并在使用前进行类型转换是多么的不方便,泛型防止了这种情况的发生,它提供了编译器的类型安全,确保你只能把正确的类型放入集合中,避免了运行时出现 ClassCastException

    • Java 泛型是如何工作的?什么是类型擦除

    泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如 List 在运行时仅用一个 List 来表示。这样做的目的,是确保能和 Java 5 之前的保本开发二进制类库进行兼容。你无法在运行时访问到类型参数,因为编译器已经把泛型类型转换为原始类型。

    • 什么是泛型中的限定通配符和非限定通配符?

    限定通配符对类型进行了限制。有两种限定通配符,一种是<? extends T> 它通过确保类型必须是T的子类来设定类型的上线,另一种是<? super T>它通过确保类型必须是T的父类来设定类型的下界。泛型类型必须用限定内的类型来进行初始化,否则会导致编译错误,另一方面<?>表示了非限定通配符,因为<?>可以用任意类型来替代。

    • List<? extends T> 和 List<? super T> 之间有什么区别

    这两个List的声明都是限定通配符的例子,List<? extends T>可以接受任何继承自T的类型的List,而List<? super T>可接受任何T的父类构成的LIst。例如 List<? extend Number>可以接受 List 或者 List

    • 可以把 List传递给一个接受List参数的方法吗?

      编译错误。List可以存储任何类型的对象,包括 String,Integer等,而List却只能用来存储String

      • Array中支持泛型吗

      不支持;List可以提供编译器的类型安全保证,而Array却不能

      • 如何组织Java中类型未检查的警告

      把泛型和原始类型混合起来使用,就会出现