【发布时间】:2014-07-05 09:09:41
【问题描述】:
看看这个.java文件:
class A {
HashMap a;
}
它不能编译;我需要import java.util.HashMap;。现在考虑这个:
class A {
String a;
}
它完全一样——除了String 而不是HashMap——所以它不应该编译,对吧?错了。
好的,众所周知,您不必导入String,但为什么呢? “显而易见”的答案是因为 String 的使用频率远高于 HashMap,但 ArrayList 不应该是“隐式导入”的吗?那么原始包装类呢,例如Integer 和 Boolean? ArrayList 比Long 和Float 更频繁地使用,但我必须导入ArrayList 而不需要导入Float。
不需要导入String、Integer、Character、Exception 和其他几个类的原因是什么?
【问题讨论】:
-
阅读关于在每个 java 文件中自动导入的 java.lang 包。
-
为什么这被否决了? The question it is a duplicate of 有 +33/-0,而且没有那么详细...
-
@TheGuywithTheHat 自提出该问题以来已经过去了一年多。 Java 标签中的社区用户比那个时代更具攻击性。此外,如果您阅读了答案,MarkBiers 会通过显式发布 JLS 的相关部分来详细解释为什么会这样,其中声明这些类是自动导入的,IMO 应该是答案。只是补充一下,我不是一个反对者,我不知道存在这样的问题。
-
技术原因已在重复问题中得到解答,因此我们无需再次提问。 “为什么”问题是题外话,因为这不是一个具体的编程问题。 Java 设计者本可以决定将
java.util中的所有内容添加到java.lang中,但他们决定反对。