[英]Generic Type with non-Generic Implementation
最近,我遇到了這樣的代碼: List<Person> somevar = new ArrayList<>();
我不明白如何使用非泛型類型構造函數ArrayList <>()初始化用特殊泛型類型List<Person>
聲明的變量。
后面的代碼顯然可以正常工作,但是為什么呢? 如何?
謝謝
它稱為Diamond Operator
,它只是減少編寫代碼的語法糖。 等效於:
List<Person> somevar = new ArrayList<Person>();
從Java/JDK 7
可用。
它被稱為“鑽石經營者”。 您不必添加類型參數的原因是,它也是由您為其分配的左側變量推斷出來的。
它與通用方法相似。 在Java 7之前,類型推斷已經在處理這些問題:
這似乎是一篇很好的文章: http : //www.javaworld.com/article/2074080/core-java/jdk-7--the-diamond-operator.html
new ArrayList<>;
不是有效的語法。 有效語法為new ArrayList<>();
這就是所謂的“鑽石符號”。 它不是非泛型的:編譯器將從上下文中推斷出類型。
非通用將是new ArrayList();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.