Java是否根据结果假定类型?
Java中有一段代码:
import java.util.HashMap;
import java.util.Collection;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<Integer, String> langMap = new HashMap<>();
langMap.put(1, "Java");
langMap.put(2, "C#");
Collection<String> values = langMap.values();
}
}
在最后一行代码中有Collection<String>. 不是<String>不必要的,因为类型是基于从 langMap 分配的值假设的吗?
回答
不是没有
<String>必要
不,这是必要的:没有<String>,变量的类型将是Collection,这是一个原始类型。不要使用原始类型。
我想 Java 可以有这样的上下文的符号Collection<>,类似于菱形符号,但它没有。
您要么必须使用Collection<String>,要么使用var支持它的语言版本(11 及更高版本)。