在Java泛型編程中媒楼,很多單詞從英文翻譯中文后會變味天梧,令人難以理解。在很多講解Java泛型的中文作品中仲锄,對于同一英文單詞的翻譯也是各不相同劲妙,閱讀時容易產(chǎn)生誤解。在接下來的一段時間儒喊,我會針對Java中的泛型镣奋、注解等知識點進行學習,期間會出一些文章怀愧,作為學習的總結侨颈,也方便后來者參考余赢。為了能夠統(tǒng)一口徑,避免產(chǎn)生誤而浪費精力哈垢。在此對一些名稱做統(tǒng)一說明妻柒,暫且稱之為術語定義吧。
ParameterizedType
這是在 java.lang.reflect 包中一個接口的名稱温赔,很多文章中把它翻譯為“參數(shù)化類型”蛤奢,我通過參閱多方資料發(fā)現(xiàn)其實這個接口就是對“泛型實例”的說明鬼癣。所以在之后的文章中陶贼,我就把這個接口稱之為“泛型實例”。
其實這個接口就是在說明一個帶參數(shù)的類型待秃,如:Collection<String>拜秧,Map<String,Object>等。這看似大家平常所說的泛型章郁,但其實不然枉氮。我們大家平時所說的泛型是Collection<E>和Map<K,V>等,而ParameterizedType表示的是泛型(Collection<E>和Map<K,V>等)的一種實例(Collection<String>和Map<String,Object>)暖庄。
TypeVariable
這是在 java.lang.reflect 包中一個接口的名稱聊替,其全名為:TypeVariable<D extends GenericDeclaration>。很多文章中翻譯為“類型變量”培廓,其實這種翻譯也沒有錯惹悄。在我閱讀了大量的有關TypeVariable的說明后發(fā)現(xiàn)其實稱它為“泛型變量”更為合適。
其實這個接口是在說明“泛型”中的可變量肩钠,也就是Collection<E>和Map<K,V>中的E泣港,K和V。
TypeVariable<D extends GenericDeclaration>
GenericDeclaration
這也是java.lang.reflect包中的一個接口价匠,這個接口在很多文章中的翻譯是“通用聲明”当纱,我看后直接是N臉蒙B的狀態(tài),完全不知道他在說什么踩窖。經(jīng)常大量閱讀資料后慢慢其解了坡氯,應該稱它為“可以聲明范型變量的實體”。
在他的定義中說的很明白:“只有實現(xiàn)了這個接口的‘實體’才能聲明‘范型變量’”洋腮。實現(xiàn)了這個接口的“實體”有哪些呢廉沮?如下所示:Class,Constructor徐矩,Method滞时。
GenericArrayType
這個也是java.lang.reflect中的接口滤灯,如果你翻譯成“通用數(shù)組類型”那就大錯特錯了曼玩。其實它是用來描述形如A<T>[]或T[]類型的黍判。如此看來稱之為“泛型數(shù)組”更為適合顷帖。
WildcardType
這個是java.lang.reflect中的接口,造成不要翻譯作“通配符類型”陶舞,其實它是用來描述“泛型”中的通配符表達式(也可以叫泛型參數(shù)表達式)的肿孵。用于限定“泛型參數(shù)”的類型停做。形如:? extends classA大莫、眉抬?super classB蜀变。
在以后的文章中就稱呼它為“泛型參數(shù)表達式”吧库北。