It's a common pattern to test the result of a java.util.Map.get()
against null
before proceeding with adding or changing
the value in the map. However the java.util.Map
API offers a significantly better alternative in the form of the
computeIfPresent()
and computeIfAbsent()
methods. Using these instead leads to cleaner and more readable code.
Note that this rule is automatically disabled when the project's sonar.java.source
is not 8.
V value = map.get(key); if (value == null) { // Noncompliant value = V.createFor(key); if (value != null) { map.put(key, value); } } return value;
return map.computeIfAbsent(key, k -> V.createFor(k));