Ich habe eine Singleton-Klasse mit Doppelprüfung im Konstruktor.Findbugs: NP_LOAD_OF_KNOWN_NULL_VALUE - Singleton-Klasse Doppelte Überprüfung
Findbugs meldet den folgenden Fehler.
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);
}
}
ich mit einem statischen Objektverweis gehen, aber die Voraussetzung ist, ein einzelnes Objekt für einen einzigartigen Request-IDs zu erstellen.
Sagen wir, Request ID 1 wird für mehrere Anfragen da sein. Daher müssen wir zur Laufzeit ein einzelnes Objekt für alle Request-IDs erstellen.
Danke,
Es gibt keine Idee der «Request ID» im Quellcode. Könnten Sie bitte [ein minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) bereitstellen? –
Es scheint nicht legal zu sein, in diesem Zusammenhang ohne ein Argument, z.B. 'synchronisiert (das)'. (http://docs.oracle.com/javase/specs/jls/se8/html/jls-14.html#jls-14.19) Können Sie sicherstellen, dass Sie uns den richtigen Code zeigen? – ajb
Sorry, habe nicht den kompletten Code eingegeben. Habe jetzt aktualisiert. – user1578872