2012-02-01 57 views
0

我使用URLClassLoader從jar文件加載java類。通過類加載器加載的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); 

這個工程到目前爲止,但加載後,loadedClass的所有成員(如聲明的方法等)都爲null。我想這是預期的行爲,並且所有成員在使用時動態加載。有沒有辦法將它們全部初始化?

回答

1

如何訪問loadedClass的會員?第一次調用相應的getter方法時,私有字段將被初始化,所以你永遠不應該從這些getter獲得null

如果您確實使用這些獲取器並且它們按預期工作,您爲什麼要想要初始化所有成員?這看起來就像是不必要的工作。

+0

我有一個NullPointerException調用isAssignableFrom()並將其調試到一個點,我認爲這是原因。但我注意到我以錯誤的方式調用了isAssignablefrom()。感覺就像星期一;-)對不起,打擾你,感謝你的快速答案。 – 2012-02-01 14:01:40