>在Java中通配符用?表示。
>在不确定泛型参数的具体类型时,可以使用?代替,
>比如public void set(List> list)
>在调用方法时,参数既可以是List也可以是List
extends Number>表示上边界限定,泛型参数只能是Number及其子类,一旦实例化其他参数类型则会报错
super Number>表示下边界限定,泛型参数只能是Number和它的父类。
除此之外,我们发现其实在使用< T extends Number >也是有效的,也是限定参数类型T只能是Number及其子类。那么他们之间的区别是什么呢?
//泛型类
class Demo1{
......
}
//泛型方法
public void set(T x) {
......
}
public class GenericsTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
ArrayList extends Number> str ;//在声明类时使用,不清楚泛型的类型,可用?表示,再用具体的类型实例化
str = new ArrayList();
//str = new ArrayList();
GenericsTest a = new GenericsTest();
List list = new ArrayList();
a.set(list);//在调用参数时直接使用具体的实参
}
public void set(List extends Number> list) {//在定义时泛型参数不确定使用?表示
}
}