- 概念
- 使用泛型注意事项:
- 泛型不能使用在静态属性上
不能使一个静态引用指向一个非静态的类型 T。静态和非静态之分就在于静态是编译时类型,动态是运行时类型。T代表未知类型,如果可以用于静态申明,因为是未知类型,系统没法指定初始值,手动赋值也不行,因为不知道啥类型,只有运行时才可以指定。而泛型存在的意义就是为了动态指定具体类型,增强灵活性和通用性,所以用于静态声明违背了使用原则。为什么实例变量和实例方法可以使用呢?因为当你使用实例变量或者方法时,就说明对象存在了,即代表泛型参数也指定了。未指定具体类型默认是Object类型。
2、使用时指定的类型不能是基本数据类型
- 泛型接口
在接口中泛型只能用在抽象方法上,不能使用在全局常量上
- 泛型方法
定义:在返回类型前面加<字母> Public static <T> void test(T t){}
调用:test(t);t为要传的具体类型
(T...t)代表可变参数,相当于数组
- 泛型的继承、实现
1、继承
注:没有类型,擦除,不完全等同于Object
2、接口实现:里面只有公共的抽象方法和全局常量
- 泛型的扩展、深入
1、泛型的通配符
2、通配符的上限和下限
(1)上限
(2)下限
注:(1)泛型没有多态:
(2)泛型没有数组:
(3)jdk1.7及以上对泛型的简化:
(4)总结: