泛型
简介
泛型是一种特殊的数据类型。 它是Java 的一个高级特性。定义一个语法结构时,不用指明具体类型,而是先定义一个类型变量,在真正使用的时候再确定该变量的具体类型。即类型参数化。
语法
泛型,定义在一对尖括号中,也是一个标识符,一般用在类名后,遵循大驼峰命名法。通常都是用一个大写字母。比如:
public class Student<T>{}
泛型的应用
泛型类的应用
将泛型用在类上时,这个类就叫做泛型类。 泛型定义在类名后
public class Person<T>{
private T idCard;
public Person(T idCard){
this.idCard = idCard;
}
//当一个子类继承带有泛型的父类时,一般情况下要给泛型参数赋值具体类名
class Student extends Person<Integer>{
public Student(Integer inCard){
super(idCard);
}
}
//子类的泛型参数可以赋值给父类的泛型参数
class Teacher<E> extends Person<E>{
public Teacher(E idCard){
super(idCard);
}
}
泛型接口的应用
将泛型用在接口上时,这个接口就叫做泛型接口。 泛型定义在接口名后。 用法和泛型类,一模一样。
泛型方法的应用
泛型不仅能用在类和接口上,还可以用在方法上。 需要把泛型定义在返回值类型前面。
public static <T> boolean equals(T t1, T t2){
return t1.equals(t2);
}
泛型通配符
简介
泛型通配符用 ? 表示,代表不确定的类型,是泛型的一个重要组成。
在调用时,表示不关心具体类型。
也可以使用通配符规定调用时,传入的类型的范围,即上边界,和下边界。
上边界
代表类型变量的范围有限,只能传入某种类型,或者它的子类。
利用
<? extends 类名>
的方式,可以设定泛型通配符的上边界
public static void print(List<? extends Number> list){
for(int i=0;i<list.size();i++){
System.out.println(list.get(i));
}
}
下边界
代表类型变量的范围有限,只能传入某种类型,或者它的父类。
利用
<? super 类名>
的方式,可以设定泛型通配符的下边界
public static void print2(List<? super Integer> list){
for(int i = 0;i<list.size();i++){
System.out.println(list.get(i));
}
}
标签:idCard,通配符,接口,----,类型,泛型,javase,public
From: https://blog.csdn.net/weixin_70903041/article/details/141300223