Java ClassLoader如何加载import java.util.*
之类的导入?我问,因为我有一个自定义类加载器,有时会被要求加载包而不是类。例如:
public Class<?> loadClass(String className) throws ClassNotFoundException
{
System.out.println(className);
return parent.loadClass(className);
}
示例输出:
org.test.model.User
org.test.model
org.test.model
所以似乎整个包都被请求了(可能是由于import org.test.model.*
?)我不确定导入是否导致了这个(以及如何处理它)或者如果一切都很好并且应该是这个办法。提前谢谢!
注意:这个问题似乎是我actual problem的根源。
修改
在下面的答案中,我明白在引用时加载了类,而import
语句并不重要。无论如何,为什么要加载包(如上例中的“org.test.model
”)?或者这样的请求意味着什么?
答案 0 :(得分:0)
&#39;进口&#39;简直就是语法糖。当您的代码被编译为字节码时,所有类都由其完整的package.name
引用答案 1 :(得分:0)
这里要理解的是ClassLoader
没有解决导入问题,他们会在引用时懒得解决这些问题。可以使用Class.forName(String className)
来急切解决这些问题。
所以基本上如果你使用import myclasses.unusedPackage.*
,它不会解析包中存在的所有类,但只会在引用时加载一个类。