您好,登錄后才能下訂單哦!
這篇文章主要講解了“Java泛型的使用限制實例分析”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Java泛型的使用限制實例分析”吧!
一 什么情況下不能使用泛型
1 不能使用泛型的形參創建對象。
T o=new T(); // 不允許
2 在泛型類中,不能給靜態成員變量定義泛型
public class A<T>{ public static T t; //錯誤 public T getA(){ //正確 ...... }}
3 泛型類不能繼承java.lang.Throwable
類
public class D<T> extends java.lang.Throwable //錯誤
4 泛型類不能初始化一個數組
T[] b = new T[10]; //錯誤
二 怎樣限制泛型的實例化
泛型類名<T extends 超類>
三 實戰
1 代碼
public class Base<T extends supA> { T m; Base( T t ) { m = t; } public T getM() { return m; } public void print() { System.out.println("base print : " + m); } public static void main( String[] args ) { B bb = new B("test B"); Base<B> base = new Base<B>(bb);//允許 //Base<String> base=new Base<String>("base class is general");//不允許 System.out.println(base.getM()); supA aa = new supA(); Base<supA> base1 = new Base<supA>(aa); System.out.println(base1.getM()); }}class supA { public String toString() { return "supA"; }}class B extends supA { String b; public B( String b ) { this.b = b; } public String toString() { return "subB"; }}
2 運行
subBsupA
3 說明
通過T extends supA
將泛型實例化對象限制到必須是supA或supA的子類。
supA可以是接口,但是extends
不能換成implements
,必須使用extends
。
感謝各位的閱讀,以上就是“Java泛型的使用限制實例分析”的內容了,經過本文的學習后,相信大家對Java泛型的使用限制實例分析這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。