。什么是泛型?泛型的作用?
。泛型的使用方式有哪几种?
。项目中哪里用到了泛型?
。什么是泛型擦除机制?为什么要擦除?
进到JVM时只要它们的结果
。既然编译器要把泛型擦除,那为什么还要用泛型呢?用Object代替不行吗?
将运行时期会发生的异常提前到编译时期 是一种安全机制 Object限制不了为一种类型
。泛型有哪些限制?为什么?
泛型得传类,不能传基本数据类型:例如,没有Pair<double>,只有Pair<Double>,其原因是类型擦除。擦除之后,Pair类含有Object类型的域,而Object不能存储double值。
不能实例化泛型类 比如 new T()
通配符
。通配符的作用?
。通配符?和常用的泛型T之间有什么区别?
不知道使用什么类型来接收的时候,此时可以使用?,?表示未知通配符。 T的话一用就锁定了该对象里得用第一次传进来的类型,?的话还可变(比如同个对象多次调用某个通配符形参方法)
。无界通配符?的作用?
。上界通配符? extends xx和下界通配符? super xxx有什么区别?使用场景?
。T extends XXX和? extends XXX又有什么区别?