1. 泛型的好处
2. 泛型的定义
泛型变量名通常用 E 、T、K、V 泛型可定义的位置:
2.1 泛型接口
public interface 接口名称< 泛型变量> {
. . .
}
泛型接口可以约束实现类,实现类在实现接口时传入自己要操作的数据类型,这样重写的方法都将是针对该类型的。
2.2 泛型类
public class 类名< 泛型变量> {
. . .
}
2.3 泛型方法
非静态方法:
修饰符 < 泛型变量> 返回值类型 方法名称( 泛型变量 变量名称) {
. . .
}
静态泛型方法:
修饰符 static < 泛型变> 返回值类型 方法名称( 泛型变量 变量名称) {
. . .
}
package fanxing_test;
public class Test02 < E> {
private E e;
public void method ( E e) { }
public < T> void m ( T t, E e) {
System. out. println ( t) ;
System. out. println ( e) ;
}
public static < K> void method2 ( K s) {
System. out. println ( ) ;
}
public < E extends Person > void method4 ( ArrayList< E> list) {
for ( E e : list) {
System. out. print ( e) ;
}
System. out. println ( ) ;
}
public < E> void method5 ( ArrayList< ? extends E > list) {
for ( E e : list) {
System. out. print ( e) ;
}
System. out. println ( ) ;
}
}
方法中可以用泛型类接受一切实际类型的参数方法更具有通用性
3. 泛型通配符、上下限
?
泛型通配符:用来匹配泛型的
List<?> list
理解为它是各种泛型List集合对象的父类 ? extends E
泛型上限: 表示匹配 E类型或者E类型的子类? super E
泛型下限 : 表示匹配E类型或者E类型的父类注: 泛型是不存在多态的,定义时等号左边<>中的类型和右边的<>的类型要一致,右侧<>中可省略。
4. 参考资料
B站黑马视频