Не понимаю, почему я получаю разыменование возможного нулевого указателя в findbug? Я видел несколько примеров того, как это исправить, но я все еще получаю ошибку. Пожалуйста, дайте мне несколько советов.
static final ConcurrentHashMap<WFGaugeFactor,AtomicDouble> GAUGE_FACTORS = new ConcurrentHashMap<>();
public void handleGauge(String name, List<Tag> tags, double value) {
String gaugeKey = gaugeKey(name, tags);
if (GAUGE_CACHE != null && !GAUGE_CACHE.containsKey(gaugeKey)) {
GAUGE_CACHE.put(gaugeKey, new AtomicDouble());
}
AtomicDouble gaugeValue = getGaugeValue(gaugeKey) == null ? new AtomicDouble() : getGaugeValue(gaugeKey);
System.out.println("Value:" + gaugeValue.doubleValue());
}
@CheckForNull
private AtomicDouble getGaugeValue(String key) {
if (GAUGE_CACHE != null && GAUGE_CACHE.get(key) != null) {
return GAUGE_CACHE.get(key);
} else {
return new AtomicDouble();
}
}
Отображается ошибка:
Code Warning
NP Possible null pointer dereference in handleGauge(String, List, double) due to return value of called method
Details
NP_NULL_ON_SOME_PATH_FROM_RETURN_VALUE: Possible null pointer dereference due to return value of called method
The return value from a method is dereferenced without a null check, and the return value of that method is one that should generally be checked for null. This may lead to a NullPointerException when the code is executed.```