Checking a provably-identical condition twice can be a sign of a logic error.
For example:
public Optional<T> first(Optional<T> a, Optional<T> b) {
if (a.isPresent()) {
return a;
} else if (a.isPresent()) { // Oops--should be checking `b`.
return b;
} else {
return Optional.empty();
}
}
It can also be a sign of redundancy, which can just be removed.
public void act() {
if (enabled) {
frobnicate();
} else if (!enabled) { // !enabled is guaranteed to be true here, so the check can be removed
doSomethingElse();
}
}
Suppress false positives by adding the suppression annotation @SuppressWarnings("AlreadyChecked")
to the enclosing element.