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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java泛型

泛型類

即把不確定的數據元素類型用一個泛型占位符表示@Data

public?class?Person?{

private?T?name;

private?T?address;

}Person?person=?new?Person<>();

person.setName("attack204");

System.out.println(person.getName());

多類型泛型

即需要傳遞多個類型占位符,一個常見的應用是map@Data

public?class?MyMap?{

private?K?key;

private?V?value;

public?void?setKeyAndValue(K?key,?V?value)?{

this.key?=?key;

this.value?=?value;

}

}MyMap?myMap?=?new?MyMap<>();

myMap.setKeyAndValue("attack204",?2333);

System.out.println(myMap.getKey());

System.out.println(myMap.getValue());

普通方法泛型@Data

public?class?Person?{

private?T?name;

private?T?address;

//以下兩種方法都可以

public?String?show(T?inputName)?{

return?inputName?+?"is?showing";

}

public??String?show2(E?input)?{

return?input?+?"is?showing?two";

}

}Person?person?=?new?Person<>();

System.out.println(person.show("attack204"));

System.out.println(person.show2("attack203"));

靜態方法泛型@Data

public?class?Person?{

private?T?name;

private?T?address;

//注意,靜態方法只能調用靜態變量,T不是靜態變量

//因此不能寫成?public?static?String?show(T?inputName)?{

public?static??String?show(E?inputName)?{

return?inputName?+?"is?showing";

}

}System.out.println(Person.show("attack204"));

泛型接口

和上面差不多一樣interfacepublic?interface?PersonInt?{

public?String?show(T?name);

}implementpublic?class?PersonImpl?implements?PersonInt?{

@Override

public?String?show(String?name)?{

return?name?+?"is?showing?three";

}

}

或者public?class?PersonImpl?implements?PersonInt?{

@Override

public?String?show(T?name)?{

return?name?+?"is?showing?three";

}

}mainPersonImpl?person?=?new?PersonImpl();

System.out.println(person.show("attack204"));

或者PersonImpl?person?=?new?PersonImpl<>();

System.out.println(person.show("attack204"))

擦除模式定義:java中的泛型只存在于編譯階段,在反射階段會被擦除。

考慮這樣一段代碼Person?p?=?new?Person<>();

Person?p1?=?new?Person<>();

system.out.println(p?==?p1);

//true目的:為了兼容低版本的jdk

通配符

在泛型中不識別父子繼承關系(具體見視頻)

因此需要通配符>來解決此錯誤

上邊界與下邊界

用了>相當于此處可以是任意類型,但是有時候需要對其進行限定

extends T>表示只能傳入T及其子類,需要讀取,但不寫入時使用

super T> 表示只能傳入T及其父類,需要寫入,但不讀取時使用

總結

以上是生活随笔為你收集整理的java 泛型 父子,Java泛型-mb601cf8a78cc07的博客-51CTO博客的全部內容,希望文章能夠幫你解決所遇到的問題。

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