泛型
- 泛型与继承
泛型:参数化类型,将类型由原来的具体类型参数化,把类型也定义为行参。方法中均使用同一类型。属于编译期信息,无法提供动态绑定,当类型与方法无关时,使用泛型。使用泛型的类应该有共同的方法,为水平方法,而继承是垂直方向。 - 类型擦除
编译器有效,运行期擦除:List List—编译后为List;主要是为了效率与兼容。 - 泛型中的N K T V E ? object的含义
K:key(键值);T:Type(Java类);V:Value(值);N:Number(数值类型);E:Element(元素,集合元素);?:无限定,Object:所有类的跟类
所有的类对象都可以给ObJect引用变量,但是需要类型强制转换 - 限定通配符和非限定通配符
表示类型的上界:<? Extends T>,类型必须为T或者其子类
表示类型的下界:<? Super T>,类型必须为T或者T的父类
非限定,任意类型代替T - List ,List<?> ,List< Object>的区别
List:可以添加任意类型的元素,不安全(编译通过),不便利(需要自己强制转换类型),不表述(可以直接看到实参就是其类型)。
List<?>:通配符类型,接受List任意参数化类型,包括List,不能添加元素,保证安全和便利,但不保证表述。
List< Object> 参数为对象,可以添加List,可以添加元素,但不能接受除了本身外的任何参数化类型。