Khi sử dụng lớp Java 8 Optional, có hai cách trong đó một giá trị có thể được gói trong một tùy chọn.
String foobar = <value or null>;
Optional.of(foobar);         // May throw NullPointerException
Optional.ofNullable(foobar); // Safe from NullPointerException
Tôi hiểu Optional.ofNullablelà cách sử dụng an toàn duy nhất Optional, nhưng tại sao lại Optional.oftồn tại? Tại sao không chỉ sử dụng Optional.ofNullable  và luôn an toàn?
java.util.Optional- Nó khả dụng nếu bạn đang sử dụng JDK 8 trở lên
                ofNullable()đặt tên of()và of()đặt tênofNotNull()