< ? extends Class > 與 < T extends Class >


在Java中,? 代表通配符

不確定泛型的具體類型時,可以用 ? 代替

邊界

< ? extends Student > 表示上界限限定,泛型參數只能是Student類及其子類

< ? super Student > 表示下界限限定,泛型參數只能是Student類及其父類

以上把 ? 改成 T 仍然是上下界限限定

區別

T 用於泛型類以及泛型方法的定義,如

//泛型類
class Demo<T extends ClassDemo>{
	...
}
//泛型方法
public <T extends ClassDemo> void get(T x) {
	...
}

?是用於類的聲明或者是參數,如

public class GenericsTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
	ArrayList<? extends Number> str ;//在聲明類時使用,不清楚泛型的類型,可用?表示,再用具體的類型實例化
	str = new ArrayList<Integer>();
	//str = new ArrayList<Double>();
	
	GenericsTest a = new GenericsTest();
	List<Double> list = new ArrayList<Double>();
	a.set(list);//在調用參數時直接使用具體的實參
	}
	public  void set(List<? extends Number> list) {//在定義時泛型參數不確定使用?表示
		
	}
}

版權聲明:本文參考CSDN博主「軒轅秋風淚」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_45925974/article/details/104806007


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM