3.泛型的应用
可以对类或方法进行泛型
泛型定义在类中,整个类有效
例1:class Demo<QQ>{
private QQ q;
public void setq( QQ q ){
this.q = q;
}
public QQ getq(){
return q;
}
}
例2;为了让不同的方法使用不同的类型,将泛型定在方法上
2.1 class demo{
public <Q> void show( Q q ){}
}
2.2 class demo{//可以是任意类型
public <Q> void show( Q q ){}
public <T> void show( T t ){}
}
2.3 class demo<Q>{
public <Q> void show( Q q ){}//随类的类型走
public <T> void show( T t ){}//可以是任意类型
}
静态泛型(先加载)
2.4 class demo{
public static <Q> void show( Q q ){}
}
3.1 泛型的高级应用:
(1)?: 通配符,也可以理解为占位符
(2)? extends A(泛型的限定:向上限定):可以接受A或A的子类
(3)? super A(泛型的限定:向下限定):可以接受A或A的父类
例1:public void print(<? extends A> a){
Iterator<? extends A> it = a.Iterator();
while( it.hasNext ){
print( it.next );
}
}
例2(比较器:implements Comparator<A>);
可以对类或方法进行泛型
泛型定义在类中,整个类有效
例1:class Demo<QQ>{
private QQ q;
public void setq( QQ q ){
this.q = q;
}
public QQ getq(){
return q;
}
}
例2;为了让不同的方法使用不同的类型,将泛型定在方法上
2.1 class demo{
public <Q> void show( Q q ){}
}
2.2 class demo{//可以是任意类型
public <Q> void show( Q q ){}
public <T> void show( T t ){}
}
2.3 class demo<Q>{
public <Q> void show( Q q ){}//随类的类型走
public <T> void show( T t ){}//可以是任意类型
}
静态泛型(先加载)
2.4 class demo{
public static <Q> void show( Q q ){}
}
3.1 泛型的高级应用:
(1)?: 通配符,也可以理解为占位符
(2)? extends A(泛型的限定:向上限定):可以接受A或A的子类
(3)? super A(泛型的限定:向下限定):可以接受A或A的父类
例1:public void print(<? extends A> a){
Iterator<? extends A> it = a.Iterator();
while( it.hasNext ){
print( it.next );
}
}
例2(比较器:implements Comparator<A>);