File: NullOptional.md

package info (click to toggle)
error-prone-java 2.18.0-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 23,204 kB
  • sloc: java: 222,992; xml: 1,319; sh: 25; makefile: 7
file content (19 lines) | stat: -rw-r--r-- 582 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Passing a literal `null` to an `Optional` accepting parameter is likely a bug.
`Optional` is already designed to encode missing values through a non-`null`
instance.

```java
Optional<Integer> double(Optional<Integer> i) {
  return i.map(i -> i * 2);
}

Optional<Integer> doubled = double(null);
```

```java
Optional<Integer> doubled = double(Optional.empty());
```

This is a scenario that can easily happen when refactoring code from accepting
`@Nullable` parameters to accept `Optional`s. Note that the check will not match
if the parameter is explicitly annotated `@Nullable`.