【发布时间】:2012-12-11 13:35:07
【问题描述】:
在 Java 7 及更高版本中,diamond 可用于正常推断类型,如下所示:
List<String> list = new ArrayList<>();
但是,它不能用于这样的匿名内部类:
List<String> st = new List<>() { //Doesn't compile
//Implementation here
}
这是为什么?从逻辑上讲,在这种情况下,我绝对可以将类型推断为String。这个决定是否存在逻辑上的原因,即类型实际上不能在匿名内部类上推断出来,还是因为其他原因而被省略?
【问题讨论】:
-
@Philipp 我不同意 - 这个问题是问为什么某段代码无法编译(实际上答案只是你不能使用带有匿名内部类的菱形),这个问题是在问为什么 Java 开发人员选择实施该特定限制的技术/逻辑原因。相关,但几乎不一样。
-
这在 JDK 9 中得到了极大的改进:bugs.openjdk.java.net/browse/JDK-8062373
-
@MichaelBerry 如果您的重新打开是合理的,请删除指向副本的链接,否则请重新关闭问题。
标签: java java-7 type-inference