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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java泛型初探————泛型通配

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

T ? ?? ? ?K ? ?V ? ?E

?——表示不確定的Java類型
T——表示Java類型
K、V——分別代表鍵-值中的Key-Value,例如Map<K,V>,put(K key, V value)
E——代表Element,例如List<E>,add(E e)

java.lang.Class

Class類的實(shí)例,描述的是Java應(yīng)用在JVM中的普通類(class 和 enum)或接口(interface 和annotion)。換句話說,每個java類運(yùn)行時都在JVM中表現(xiàn)為一個Class對象。
Class對象獲取:
第一種方式: 對象.getClass()
Student sdt = new Student(); Class<?> sdtClz = sdt.getClass();第二種方式: 類名.class
Class<?> sdtClz2 = Student.class;

第三種方式:靜態(tài)方法Class.forName("完整類名")

Class<?> sdtClz3 = Class.forName("thinging.in.java.Student"); 說明:關(guān)于Class對象的用處,像forName()和newInstance()都是比較常見的,其他方法請參考Class類源碼

數(shù)組同樣也被映射為Class對象的一個類,根據(jù)數(shù)組元素類型和維數(shù)的不同,具有相同的數(shù)組元素類型與維數(shù)的數(shù)組會共享同一個Class對象。另外,八大基本型和關(guān)鍵字void同樣表現(xiàn)為Class對象。

Class<T> 、Class<?> 、T

Class<?>是通配泛型,?代表任何類型,也可以(取巧地)理解為Object類型(也就是說Class<?>與Class<Object>是等價的)。因此,Object類型的Class對象,在newInstance的時候當(dāng)然也是返回一個Object對象,如果我們需要具體的某一個類的對象,當(dāng)然需要強(qiáng)轉(zhuǎn)。
但是,Class<T>在實(shí)例化的時候,T要替換成具體類。也就是類似于Class<Student>、Class<Square>這類形式,這種方式,我們在使用Class對象的時候?qū)lass對象進(jìn)行了類型約束,因此,在使用Class對象進(jìn)行實(shí)例化的時候(Class.newInstance())就不需要進(jìn)行強(qiáng)制轉(zhuǎn)化成我們需要的類型,因?yàn)?lt;T>已經(jīng)幫我們進(jìn)行了類型的約束。
T 同樣表示某一個具體類型,我們定義一個泛型方法如下:
public static <T> String getSomething(T bean){return "something"; }當(dāng)我們調(diào)用這個getSomething方法的時候,允許程序員傳入任何類型的對象,但是參數(shù)的類型T只是在傳值時可以任意選擇,但是一旦傳入了某個具體類型的bean,那么運(yùn)行時的T便已經(jīng)確定。另外,參數(shù)類型需要寫在返回值前面并用<>括起來。

受限通配、下限通配

<? extends T> 代表受限通配,表示T類型的子類;
<? super T> 代表下限通配,表示T類型的一個未知父類。

總結(jié)

以上是生活随笔為你收集整理的Java泛型初探————泛型通配的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。