集合可以存储不同的数据类型
ArrayList list = new ArrayList(); 可以指定集合中只能存String类型,<>这就是泛型
Collection E element:元素
Comparator T type
泛型类和 泛型方法
· 当类中要操作的引用数据类型不确定时,可以定义泛型类来完成(早期定义Object类来实现)。
· 泛型类定义的泛型,在整个类中都有效,如果被类中的方法使用,那么当泛型类的对象明确要操作的具体类型后,方法所要操作的对象类型已经固定了。
Class Utils<QQ> // 泛型类
{
private QQ q;
private void setObject(QQ q){ // 泛型方法
this.q = q;
}
private QQ getObject(){
return q;
}
}
· 为了让不同方法可以操作不同类型,而且类型还不确定,可以将泛型定义在方法上。
Class Demo {
public <T> void show(T t){
sopt("show" + t.toString());
}
public <Q> void pei(Q q){
sopt("pei" + q.toString())
}
}
静态方法泛型
· 静态方法不可以访问类上定义的泛型
· 如果静态方法操作的应用数据类型不确定,可以将泛型定义在方法上。
public static <W> void method(W w){
sopt("method" + w);
}
注意:泛型 一定要放在返回值类型的前面,修饰符的后面
泛型定义在接口上
Interface Ans <T> {
void show(T t);
}
class Ansal implements Ans<String> {
public void show(String str){
soup("show" + str);
}
}
class Ansll<T> implements Ans<T> {
public void show(T str){
soup("show" + str);
}
}
泛型限定
?是通配符,或者占位符
和<?>区别不大
· T t = it.next(); ?不能这么写
· Student类继承Person类
不可以 ArrayList li = new ArrayList(); 也不可以ArrayList li = new ArrayList();两边类型必须一样。