- Java中的泛型是什么?使用泛型的好处是什么?
在集合中存储对象并在使用前进行类型转换是多么的不方便,泛型防止了这种情况的发生,它提供了编译器的类型安全,确保你只能把正确的类型放入集合中,避免了运行时出现 ClassCastException
- Java 泛型是如何工作的?什么是类型擦除
泛型是通过类型擦除来实现的,编译器在编译时擦除了所有类型相关的信息,所以在运行时不存在任何类型相关的信息。例如 List
- 什么是泛型中的限定通配符和非限定通配符?
限定通配符对类型进行了限制。有两种限定通配符,一种是<? 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