为什么autoimport只有java.lang包?

gam*_*ver 18 java import

我知道java.lang我们编写的每个java程序都会自动导入包,因此我们可以自动使用它中的所有类.

我的问题是为什么不自动导入java.util和其他包呢?这肯定会节省一些打字:)

所以请解释为什么没有这样做.

dan*_*ben 32

不自动导入太多的一个很好的理由是避免命名空间冲突.如果所有内容都是java.util自动导入的,然后您想要引用另一个名为"Map"的类,则必须通过其完全限定名称来引用它.

响应此线程中的其他答案,import实际上并未修改类文件的内部表示形式.实际上,这里是一个描述类文件结构的JVM规范的链接:请参阅导入不存储在任何地方.

  • 我不同意这是一个毫无意义的答案.他问为什么不自动导入其他软件包 - 他没有问为什么我们自动导入`java.lang`.但是如果你这么想,我猜这个答案与Javadocs的包描述有关 - "提供对Java编程语言设计至关重要的类." 如果你觉得某个特定的软件包是你正在设计的语言的基础,你可能会认为自动适合自己,而不会讨论该语句的有效性,这超出了本主题的范围. (6认同)
  • 那是一种"因为它是"答案.当然,如果你想要另一个Map(java.util),那么你必须完全限定它,但如果你想要另一个进程(java.lang),你仍然需要.问题仍然存在:java.lang中的类集对于它总是被导入的特别之处,还有什么不是?Gosling认为我们比List更频繁地使用StrictMath吗? (5认同)