这是一个例子:
import java.util.HashMap;
public class Test
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("leorum", 1);
map.put("ipsum", 2);
map.put("dolor", 3);
System.out.println(map.keySet().toString());
}
}
一切都编译并运行良好。但是,当我移动map.keySet()
到另一个变量时:
import java.util.HashMap;
public class Test
{
public static void main(String[] args)
{
HashMap<String, Integer> map = new HashMap<String, Integer>();
map.put("leorum", 1);
map.put("ipsum", 2);
map.put("dolor", 3);
Set<String> keys = map.keySet();
System.out.println(keys.toString());
}
}
我收到一个错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Set cannot be resolved to a type
at Test.main(Test.java:12)
我明白为什么我在第二个示例中收到错误,但为什么我在第一个示例中没有收到错误?java 编译器如何知道map.keySet()
不导入 java.util.Set 会返回什么?
我也在其他编程语言中看到过这种行为,尤其是 C++。