泛型 T和?的区别

2025.6.5

PECS原则

https://www.cnblogs.com/lori/p/16145271.html

 

T代表一种类型。

加在类上:

class SuperClass{}

加在方法上:

public void fromArrayToCollection(T[] a, Collection c){}

方法上的<T>代表括号里面要用到的泛型,需要指定,若类中传了泛型,此处可以不传,调用类型上面的泛型参数,前提是方法中使用的泛型与类中的泛型保持一致。

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");

 

posted @ 2021-12-12 15:15  sellingpear  阅读(415)  评论(0)    收藏  举报