日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java 高级泛型_Java 泛型高级

發(fā)布時間:2023/12/9 java 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 高级泛型_Java 泛型高级 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、限制泛型可用類型

在定義泛型類別時,預設可以使用任何的類型來實例化泛型中的類型,但是如果想要限制使用泛型的類別時,只能用某個特定類型或者其子類型才能實例化該類型時,使用extends關鍵字指定這個類型必須是繼承某個類,或者實現(xiàn)某個接口。

如下Code

public class ListGenericFlag {

private T[] flagArray;

public T[] getFlagArray() {

return flagArray;

}

public void setFlagArray(T[] flagArray) {

this.flagArray = flagArray;

}

}

測試:

public static void main(String[] args) {

ListGenericFlag flag1 = new ListGenericFlag();

ListGenericFlag flag2 = new ListGenericFlag();

LinkedList[] likedList = new LinkedList[10];

flag1.setFlagArray(likedList);

ArrayList[] arrayLists = new ArrayList[10];

flag2.setFlagArray(arrayLists);

}

如果出入的是HashMap,就會顯示出錯

2、當沒有指定泛型繼承的類型或接口時,默認使用T extends Object,所有默認情況下任何類型都可以作為參數(shù)傳入。

如下圖Code,可以增加任何對象。

3、現(xiàn)在有這樣一個需求,需要實現(xiàn)如下

flag = new GenericFlag()

flag = new GenericFlag

簡單的說,實例化類型持有者時,它必須是實現(xiàn)List的類別或其子類別,要定義這樣一個名詞,可以使用“?”通配子元,并使用“extends”關鍵字限定類型持有者的型態(tài)。

實現(xiàn)的Code如下

public class GenericTest {

private T flag;

public T getFlag() {

return flag;

}

public void setFlag(T flag) {

this.flag = flag;

}

public static void main(String[] args) {

//固定語法

GenericTest extends List> g1 = null;

g1 = new GenericTest();

g1 = new GenericTest();

}

}

super為list上面的(用的較少)

GenericTest super List> g2 = null;

g2 = new GenericTest();

4、泛型的繼承

定義了Parent類,里面有泛型T1和T2

public class Parent {

private T1 flag;

private T2 flag2;

public T1 getFlag() {

return flag;

}

public void setFlag(T1 flag) {

this.flag = flag;

}

public T2 getFlag2() {

return flag2;

}

public void setFlag2(T2 flag2) {

this.flag2 = flag2;

}

}

定義了Child類,定義了T3。同時可以訪問父類的T1和T2

public class Child extends Parent {

private T3 flag3;

public T3 getFlag3() {

return flag3;

}

public void setFlag3(T3 flag3) {

this.flag3 = flag3;

}

}

5、泛型接口的繼承

定義一個泛型接口

public interface IParent {

public void setFlag1(T1 flag1);

public void setFlag2(T2 flag2);

public T1 getFlag1();

public T2 getFlag2();

}

定義泛型接口的實現(xiàn)類

public class ChildClass implements IParent {

private T1 flag1;

private T2 flag2;

public void setFlag1(T1 flag1) {

this.flag1 = flag1;

}

public void setFlag2(T2 flag2) {

this.flag2 = flag2;

}

public T1 getFlag1() {

return flag1;

}

public T2 getFlag2() {

return flag2;

}

}

總結

以上是生活随笔為你收集整理的java 高级泛型_Java 泛型高级的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。