File: EqualsNull.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 (20 lines) | stat: -rw-r--r-- 707 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
The contract of `Object.equals()` states that for any non-null reference value
`x`, `x.equals(null)` should return `false`. Thus code such as

```
if (x.equals(null)) {
  ...
}
```

either returns `false`, or throws a `NullPointerException` if `x` is `null`. The
nested block may never execute.

This check replaces `x.equals(null)` with `x == null`, and `!x.equals(null)`
with `x != null`. If the author intended for `x.equals(null)` to return `true`,
consider this as fragile code as it breaks the contract of `Object.equals()`.

See [Effective Java 3rd Edition ยง10: Objey the general contract when overriding
equals][ej3e-10] for more details.

[ej3e-10]: https://books.google.com/books?id=BIpDDwAAQBAJ