本文目錄一覽:
java泛型的規則限制
1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
2、同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3、泛型的類型參數可以有多個。
4、泛型的參數類型可以使用extends語句,例如T extends superclass。習慣上稱為「有界類型」。
5、泛型的參數類型還可以是通配符類型。例如Class? classType = Class.forName(“java.lang.String”);
泛型還有介面、方法等等,內容很多,需要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經了解泛型時候寫出的兩個例子(根據看的印象寫的),實現同樣的功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。
例子一:使用了泛型 class GenT { private T ob; // 定義泛型成員變數 public Gen(T ob) { this.ob = ob; } public T getOb() { return ob; } public void setOb(T ob) { this.ob = ob; } public void showType() { System.out.println(“T的實際類型是: ” + ob.getClass().getName()); }}public class GenDemo { public static void main(String[] args) { // 定義泛型類Gen的一個Integer版本 GenInteger intOb = new GenInteger(88); intOb.showType(); int i = intOb.getOb(); System.out.println(“value= ” + i); System.out.println(“———————————-“); // 定義泛型類Gen的一個String版本 GenString strOb = new GenString(“Hello Gen!”); strOb.showType(); String s = strOb.getOb(); System.out.println(“value= ” + s); }}例子二:沒有使用泛型 class Gen2 { private Object ob; // 定義一個通用類型成員 public Gen2(Object ob) { this.ob = ob; } public Object getOb() { return ob; } public void setOb(Object ob) { this.ob = ob; } public void showTyep() { System.out.println(“T的實際類型是: ” + ob.getClass().getName()); }}public class GenDemo2 { public static void main(String[] args) { // 定義類Gen2的一個Integer版本 Gen2 intOb = new Gen2(new Integer(88)); intOb.showTyep(); int i = (Integer) intOb.getOb(); System.out.println(“value= ” + i); System.out.println(“———————————“); // 定義類Gen2的一個String版本 Gen2 strOb = new Gen2(“Hello Gen!”); strOb.showTyep(); String s = (String) strOb.getOb(); System.out.println(“value= ” + s); }}運行結果:
兩個例子運行Demo結果是相同的,控制台輸出結果如下:
T的實際類型是:
java.lang.Integer
value= 88
———————————-
T的實際類型是: java.lang.String
value= Hello Gen!
Process finished with exit code 0
看明白這個,以後基本的泛型應用和代碼閱讀就不成問題了。
java泛型:設置限定,類型變數T和U是同時實施限定嗎?
不是,在Java中T, U表示指定了2個泛型,T、U
如果要對泛型限制:
如T, U extends Comparable
表示泛型U限定了必須為 Comparable 的子類,而T沒有
如T extends Comparable, U extends Comparable
表示泛型T和U都限定為 Comparable 的子類
注由於 Comparable 是個介面,因此「 Comparable 的子類 」 正確的描述為實現了 Comparable 介面的類
T, U extends Comparable Serializable表示:
T 為任意類型,沒有限制
U 有限制,為現實了Comparable 和 Serializable 介面的類
java泛型中的自限定類型有什麼作用
“T”可以代表任意類型的。
解釋: 「T」是泛型的默認值,可以被任意類型所代替,如:
ListString list = new ArayListString();這個就定義了一個String類型的數組,那麼T的類型就是字元串。
ListT list = new ArayListT();之後也有可以:list.add(“StringBatch”);
這個時候T的類型也是String。也就是說T是動態的,可以被任意指定類型。
原創文章,作者:XXQB,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/145456.html