泛型类的概述及使用
概述:把泛型定义在类上
class Student<T,Q> { //可以有多个类型变量,该类型变量可以在类内使用
//在创建类的对象时传递实际类型参数
private T t;
private Q q;
public void setT(T t) {
this.t = t;
}
public void setQ(Q q) {
this.q = q;
}
}
在方法上使用泛型
//可以在方法上单独定义泛型
'泛型位置在修饰符后面返回值前面'
非静态方法:
public<W> void show(W w)
//<>对类型变量的声明,声明一个类型变量W
//既可以使用类上的类型变量又可以使用方法上自定义类型变量
静态方法:
public static<S> void print(S s)
只能在其上定义泛型,不能使用类上的泛型
因为类上的类型变量在创建对象时被赋值
而静态方法随着类的加载而加载,此时还没有对象
在接口上使用泛型
public interface Inter<I>
两种实现方式:
class Impl implements Inter<String>
a.直接在接口上定义类型变量(推荐)
在实现类上传递实际类型参数
class Impl<I> implements Inter<I>
b.类上和实现类上都定义相同的类型变量
然后再new对象的时候传递实际类型参数
6.泛型高级之通配符
a. ? <?> 当实际参数类型不确定时
b. ? extends E : ?是E类型或E的子类型
c. ? super E : ?是E类型或E的父类型
|
|