泛型
概念
类型参数,参数化的类型
比喻:标签
形式
1、泛型类、泛型接口
//语法格式 [修饰符] class/interface 类名/接口名<类型参数列表>{ }
多个之间使用,分割
类型参数习惯命名
原则:尽量见名知意,尽量是1个大写字母,或大写字母加数字
E Element
K Key
V Value
T Type
T1,T2
U1,U2
R ReturnType
注意
(1)泛型形参由泛型实参决定
在使用这个泛型类时
(1)创建对象 ArrayList<Student> list = new ArrayList<Student>();
(2)继承类或实现接口 class Student implements Comparable<Student>
(2)泛型实参必须指定为引用数据类型,不能是基本数据类型
(3)泛型形参在声明它的类或接口中,当做某种已知的类型来使用的,可以用它声明属性、方法的形参类型,方法的返回值类型,方法的局部变量类型等
(4)泛型形参不能用于
不能作为异常的类型
不能用于静态成员上面
(5)泛型
不能用于创建数组对象
2、泛型方法
//语法格式 [修饰符] <类型参数列表> 返回值类型 方法名(形参列表)
泛型方法可以是静态方法,也可以是非静态方法
静态方法如果要用泛型,只能使用泛型方法的形式
泛型方法的类型形参只适用于当前方法,和别的方法无关
泛型方法的泛型形参由调用该方法时实参的类型决定
此时实参,即决定了泛型方法形参的值,又决定了泛型方法形参的类型
泛型方法的泛型形参也不能是指定为基本数据类型,可以用它的包装类,也不能用于异常类型
泛型的通配符
1、?
代表任意类型
如果是集合,例如ArrayList<?>,这样的集合不能添加元素
2、? extends 父类
?代表父类本身或父类的子类类型可以
如果是集合,例如ArrayList<? extends 父类>,这样的集合不可以添加
3、? super 子类
?代表子类本身或子类的父类类型可以
如果是集合,例如ArrayList<? super 子类>,这样的集合,可以添加,仅限于添加子类或子类的子类对象
JDK1.7的简写法
ArrayList<String> list = new ArrayList<>();
标签:形参,子类,ArrayList,类型,泛型,方法 From: https://www.cnblogs.com/woniupa/p/17183643.html