-4
我創建了一個Initialize類以避免大量不需要的對象。要使用這個對象,我創建它的一個實例,像這樣:NPE正在拋出靜態類參考,爲什麼以及如何?
public static Initialize INIT = new Initialize();
每當我用「Initialize.INIT」我在「初始化」得到空指針。
我能做些什麼來解決我原來的錯誤,StackOverflow上避免的NPE?
我創建了一個Initialize類以避免大量不需要的對象。要使用這個對象,我創建它的一個實例,像這樣:NPE正在拋出靜態類參考,爲什麼以及如何?
public static Initialize INIT = new Initialize();
每當我用「Initialize.INIT」我在「初始化」得到空指針。
我能做些什麼來解決我原來的錯誤,StackOverflow上避免的NPE?
的NPE的原因是在您嘗試使用它的時候的INIT
值null
。
這怎麼可能?畢竟你初始化它到一個新的對象,並且new
操作符永遠不會返回null
。
那麼最可能的解釋是,東西指定null
到INIT
。您應該能夠通過將該字段聲明爲final
來避免此情況。
(也有可能你有一些代碼在初始化之前查看INIT
的值,這隻有在你執行其他類的靜態初始化代碼時纔會發生,並且存在一個依賴循環這個類的靜態和另一個之間。)
什麼是構造函數的代碼?注意:'public static'變量應該至少也是'final' – fge
請向我們展示完整的異常和回溯。 –
什麼@ PM77-1,也顯示使用代碼示例,您可以訪問'Initialize.INIT'。嘗試並做出最終決定,看看你是否可以重現問題。 – fge