考虑我X在包中的 java 编译单元中使用了一个类型,foo.bar并且X没有在编译单元本身中定义,也没有直接导入。java编译器X现在如何有效地解析?有几种可能X存在的地方:
X可能通过星形导入导入a.b.*X可能与编译单元位于同一包中X可能是一种语言类型,即驻留在java.lang
我看到的问题尤其是(2.)。由于X可能是包私有类型,因此甚至不需要X驻留在名为X.java. 因此,编译器必须查看类路径的所有条目并搜索包中的任何类foo.bar,然后必须读取包中的每个类foo.bar以检查是否X包含。
这听起来非常昂贵。特别是当我只编译一个文件时,编译器必须读取几十个类文件才能找到一个类型X。如果我使用大量星形导入,则必须对很多类型重复此过程(当然,类文件不会被读取两次)。
那么是否建议从同一个包中导入类型以加快编译过程?或者有没有更快的方法来解决X我找不到的未导入类型?