簡體   English   中英

具有非通用實現的通用類型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM