Java中與泛型相關(guān)的接口 之 術(shù)語(yǔ)定義

在Java泛型編程中,很多單詞從英文翻譯中文后會(huì)變味,令人難以理解。在很多講解Java泛型的中文作品中,對(duì)于同一英文單詞的翻譯也是各不相同,閱讀時(shí)容易產(chǎn)生誤解。在接下來(lái)的一段時(shí)間,我會(huì)針對(duì)Java中的泛型、注解等知識(shí)點(diǎn)進(jìn)行學(xué)習(xí),期間會(huì)出一些文章,作為學(xué)習(xí)的總結(jié),也方便后來(lái)者參考。為了能夠統(tǒng)一口徑,避免產(chǎn)生誤而浪費(fèi)精力。在此對(duì)一些名稱做統(tǒng)一說(shuō)明,暫且稱之為術(shù)語(yǔ)定義吧。

ParameterizedType

這是在 java.lang.reflect 包中一個(gè)接口的名稱,很多文章中把它翻譯為“參數(shù)化類型”,我通過(guò)參閱多方資料發(fā)現(xiàn)其實(shí)這個(gè)接口就是對(duì)“泛型實(shí)例”的說(shuō)明。所以在之后的文章中,我就把這個(gè)接口稱之為“泛型實(shí)例”。

其實(shí)這個(gè)接口就是在說(shuō)明一個(gè)帶參數(shù)的類型,如:Collection<String>,Map<String,Object>等。這看似大家平常所說(shuō)的泛型,但其實(shí)不然。我們大家平時(shí)所說(shuō)的泛型是Collection<E>和Map<K,V>等,而ParameterizedType表示的是泛型(Collection<E>和Map<K,V>等)的一種實(shí)例(Collection<String>和Map<String,Object>)。

ParameterizedType

TypeVariable

這是在 java.lang.reflect 包中一個(gè)接口的名稱,其全名為:TypeVariable<D extends GenericDeclaration>。很多文章中翻譯為“類型變量”,其實(shí)這種翻譯也沒(méi)有錯(cuò)。在我閱讀了大量的有關(guān)TypeVariable的說(shuō)明后發(fā)現(xiàn)其實(shí)稱它為“泛型變量”更為合適。

其實(shí)這個(gè)接口是在說(shuō)明“泛型”中的可變量,也就是Collection<E>和Map<K,V>中的E,K和V。

TypeVariable<D extends GenericDeclaration>

GenericDeclaration

這也是java.lang.reflect包中的一個(gè)接口,這個(gè)接口在很多文章中的翻譯是“通用聲明”,我看后直接是N臉蒙B的狀態(tài),完全不知道他在說(shuō)什么。經(jīng)常大量閱讀資料后慢慢其解了,應(yīng)該稱它為“可以聲明范型變量的實(shí)體”。

在他的定義中說(shuō)的很明白:“只有實(shí)現(xiàn)了這個(gè)接口的‘實(shí)體’才能聲明‘范型變量’”。實(shí)現(xiàn)了這個(gè)接口的“實(shí)體”有哪些呢?如下所示:Class,Constructor,Method。

GenericDeclaration

GenericArrayType

這個(gè)也是java.lang.reflect中的接口,如果你翻譯成“通用數(shù)組類型”那就大錯(cuò)特錯(cuò)了。其實(shí)它是用來(lái)描述形如A<T>[]或T[]類型的。如此看來(lái)稱之為“泛型數(shù)組”更為適合。

GenericArrayType

WildcardType

這個(gè)是java.lang.reflect中的接口,造成不要翻譯作“通配符類型”,其實(shí)它是用來(lái)描述“泛型”中的通配符表達(dá)式(也可以叫泛型參數(shù)表達(dá)式)的。用于限定“泛型參數(shù)”的類型。形如:? extends classA、?super classB。

在以后的文章中就稱呼它為“泛型參數(shù)表達(dá)式”吧。

WildcardType

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。