【发布时间】:2014-08-05 13:00:59
【问题描述】:
今天我们讨论了 Java 7 在我们公司的优势。由于 Java 7 有可能定义以下行
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
作为
Map<String, List<String>> myMap = new HashMap<>();
我们就上述主题进行了长时间的讨论。我们中的一些人认为这是类型推断(如 C# 中的 var 关键字)并且类型将在运行时计算,其他人认为这只是声明某个变量的一种更简单的方法并且没有推断,因为类型在编译时由上下文已知。
请提供说明。该技术是如何工作的?
编辑: 官方 Oracle 文档没有提供关于此的精确文档。 http://docs.oracle.com/javase/tutorial/java/generics/genTypeInference.html
【问题讨论】:
-
这是类型推断。有关其工作原理的完整详细信息,您需要阅读 Java 语言规范。
-
相关的“Oracle 官方文档”在这里:docs.oracle.com/javase/specs - 更具体地说,在这里:docs.oracle.com/javase/tutorial/java/generics/types.html 和 docs.oracle.com/javase/specs/jls/se7/html/…(无论如何都适用于 Java 7)。
-
而且,类型推断总是发生在编译时,而不是运行时。见en.wikipedia.org/wiki/Type_inference
标签: java generics java-7 type-inference variable-declaration