通过类加载器未初始化加载的java类成员

时间:2012-02-01 13:15:58

标签: java classloader

我正在使用URLClassLoader从jar文件加载java类。

String className = ...
File jarFile = ...
ClassLoader parent = this.getClass().getClassLoader();
ClassLoader urlLoader = new URLClassLoader(new URL[] { jarFile.toURI().toURL() }, parent);
Class <?> loadedClass = urlLoader.loadClass(className);

这个工作到目前为止,但loadingClass的所有成员(如declaredMethods等...)在加载后为null。我猜这是预期的行为,所有成员在使用时都会动态加载。有没有办法立即初始化它们?

1 个答案:

答案 0 :(得分:1)

您如何访问loadedClass的成员?私有字段将在第一次调用相应的getter方法时进行初始化,因此您永远不应从这些getter中获取null

如果您确实使用了这些getter并且它们按预期工作,那么您为什么要急切地初始化所有成员?这似乎就像不必要的工作一样。