September 2019
Intermediate to advanced
816 pages
18h 47m
English
The do not use category continues with a very tempting scenario that consists of using Optional in setter arguments. The following code should be avoided since it adds extra boilerplate code and violates the Do not use Optional for fields section (check the setIsbn() method):
// Avoidpublic class Book { private Optional<String> isbn; public Optional<String> getIsbn() { return isbn; } public void setIsbn(Optional<String> isbn) { if (isbn == null) { this.isbn = Optional.empty(); } else { this.isbn = isbn; } // or this.isbn = Objects.requireNonNullElse(isbn, Optional.empty()); }}
We can fix this code by removing Optional from the fields and from the setters' arguments as follows:
// Preferpublic class ...