我已經看到了在Java中的很多次構造類似於:在Java中調用< and >之間的術語是什麼?
List <String> myList = Arrays.asList("element1","element2","element3");
或
Map<Integer, String> map;
現在我想知道這是什麼<String>
或<>跡象正在做什麼。或者特別是它的名稱,以便我可以搜索它。所有搜索我之前已經完成了操作。那麼有人可以告訴我這是如何被稱爲?
我已經看到了在Java中的很多次構造類似於:在Java中調用< and >之間的術語是什麼?
List <String> myList = Arrays.asList("element1","element2","element3");
或
Map<Integer, String> map;
現在我想知道這是什麼<String>
或<>跡象正在做什麼。或者特別是它的名稱,以便我可以搜索它。所有搜索我之前已經完成了操作。那麼有人可以告訴我這是如何被稱爲?
<>稱爲鑽石操作員。聲明類型變量,例如使用它的<E>
並傳遞reference types。尋找JLS 4.4節Type Variables
List接口聲明瞭一個類型變量E
內<>
鑽石運營商。
public interface List<E> extends Collection<E>
當你做List <String> myList
你實際上傳遞參考類型或類型參數的E
。
當您在右側遇到空的<>
時,Java會推斷出=
運算符左側的任何類型參數。
您可以像使用像<String>
這樣的鑽石運算符將字符串類型傳遞給E
來理解它。這是不正確的,因爲仿製藥使用類型擦除。你可以發送任何類型。只要它符合類型變量E
。
因爲它變成了一個String對象列表。 如果發送<Object>
比它變成對象列表。
小心。 IIRC Diamond操作符是Java7 +自動引用實際類型的可能性,而不是類型參數。在Java7之前,你必須做「列表
我同意在右側Java推斷左側的任何類型參數。 – abcdef12
這是泛型類型參數(一個或多個) 查看文檔在這裏:https://docs.oracle.com/javase/tutorial/java/generics/types.html
的Java支持泛型類型的概念。
這些類型具有共同的行爲,不管它們的類型參數是什麼。
例如,查看列表集合。 List是元素的順序集合,Integer的List與Strings的List不同,但基本邏輯是相同的。
所以不是有兩種不同類型的ListOfInteger和ListOfString,Java有一個列表類型,與一類參數指定什麼元素
所以<和>之間的術語叫做類型參數的類型,而List是一個泛型類型。
「Java Generics」<---在Google中鍵入該關鍵字 –
它被稱爲「模板參數」 – EpicPandaForce
*上面的代碼是否與此類似?*不,絕對不是! – user2004685