NestedOptionals
WARNING
FragileCode
Summary
Avoid nesting
Optional
s insideOptional
s; the resultant code is hard to reason about
Suppression
Suppress false positives by adding the suppression annotation
@SuppressWarnings("NestedOptionals")
to the enclosing element.Disable this pattern completely by adding
-Xep:NestedOptionals:OFF
as compiler argument. Learn more.
Samples
Identification
Shows code lines which will (not) be flagged by this bug pattern.
A //BUG: Diagnostic contains:
comment is placed above any violating line.
import java.util.Optional;
import java.util.stream.Stream;
class A {
void m() {
Optional.empty();
Optional.of(1);
// BUG: Diagnostic contains:
Optional.of(Optional.empty());
// BUG: Diagnostic contains:
Optional.of(Optional.of(1));
Optional.ofNullable(null);
// BUG: Diagnostic contains:
Optional.ofNullable((Optional) null);
Optional.of("foo").map(String::length);
// BUG: Diagnostic contains:
Optional.of("foo").map(Optional::of);
Stream.of("foo").findFirst();
// BUG: Diagnostic contains:
Stream.of("foo").map(Optional::of).findFirst();
}
}
import java.time.Duration;
class A {
void m() {
Duration.ofSeconds(1);
}
}