我有一個Singleton類,在構造函數中進行雙重檢查。Findbugs:NP_LOAD_OF_KNOWN_NULL_VALUE - Singleton類雙重檢查
Findbugs正在報告以下錯誤。
Load of known null value in ... NP_LOAD_OF_KNOWN_NULL_VALUE
class SomeClass {
private Object lock = new Object();
private Map<String,Resource> resourceMap = new HashMap<>();
public Resource getResource(String resourceId) {
if (resourceMap.get(resourceId) == null) {
synchronized(lock) {
if (resourceMap.get(resourceId) == null)
Resource resource = new Resource();
resourceMap.put(resourceId,resource);
}
}
return resourceMap.get(resourceId);
}
}
我可以用一個靜態對象的引用去,但要求是創建一個單一對象的唯一請求ID。
說,請求ID 1將在那裏多個請求。所以,我們將不得不在運行時爲此爲所有請求標識創建單個對象。
謝謝,
源代碼中沒有「請求ID」的概念。你能否提供[最小,完整和可驗證的例子](http://stackoverflow.com/help/mcve)? –
在沒有參數的情況下在此上下文中使用「synchronized」並不合法,例如'同步(這)'。 (http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.19)您能否確保您向我們顯示正確的代碼? – ajb
對不起,沒有把完整的代碼。已經更新。 – user1578872