我正在使用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。我猜这是预期的行为,所有成员在使用时都会动态加载。有没有办法立即初始化它们?
答案 0 :(得分:1)
您如何访问loadedClass
的成员?私有字段将在第一次调用相应的getter方法时进行初始化,因此您永远不应从这些getter中获取null
。
如果您确实使用了这些getter并且它们按预期工作,那么您为什么要急切地初始化所有成员?这似乎就像不必要的工作一样。