目录
泛型用过吗?讲一下什么是泛型?
泛型是jdk1.5提出的,在没有泛型之前,所有存入集合的数据都被认为是Object类,当获取一个值的时候就需要强制类型转换,因为没有错误检查,所以可以向集合中添加任意类型对象。而泛型的出现就防止了这种情况的发生,它提供了编译期的类型检查,确保输入的类型匹配才可以通过编译,这就有效的防止了运行时出现ClassCastException异常。
你知道什么是类型擦除吗?
泛型信息只存在于代码编译阶段,在进入jvm之前,与泛型相关的信息会被擦除掉,这就是类型擦除,在运行时不存在任何类型,例如 List<String>在运行时仅用一个List来表示
在泛型中的限定通配符和非限定通配符?
这是另一个非常流行的Java泛型面试题。限定通配符对类型进行了限制。有两种限定通配符,一种是<? extends T>它通过确保类型必须是T的子类来设定类型的上界,另一种是<? super T>它通过确保类型必须是T的父类来设定类型的下界。泛型类型必须用限定内的类型来进行初始化,否则会导致编译错误。另一方面<?>表 示了非限定通配符,因为<?>可以用任意类型来替代。更多信息请参阅我的文章泛型中限定通配符和非限定通配符之间的区别。