java泛型中的?和T有什么区别?
发布时间:2020-05-21 23:15:47
来源:亿速云
阅读:214
作者:鸽子
T 代表一种类型。
加在类上:class SuperClass{}
加在方法上:public void fromArrayToCollection(T[] a, Collection c){}
方法上的代表括号里面要用到泛型参数,若类中传了泛型,此处可以不传,调用类型上面的泛型参数,前提是方法中使用的泛型与类中传来的泛型一致。class People{
public void show(T a) {
}
}
T extends T2 指传的参数为T2或者T2的子类型。
?是通配符,泛指所有类型。
一般用于定义一个引用变量,这么做的好处是,如下所示,定义一个sup的引用变量,就可以指向多个对象。SuperClass> sup = new SuperClass("lisi");
sup = new SuperClass(new People());
sup = new SuperClass(new Animal());
若不用?,用固定的类型的话,则:SuperClass sup1 = new SuperClass("lisi");
SuperClass sup2 = new SuperClass("lisi");
SuperClass sup3 = new SuperClass("lisi");
这就是?通配符的好处。