1. 声明一个空的Optional
Optional<Integer> obj = Optional.empty();
2. 依据一个非空值创建Optional
Optional<Integer> object = Optional.of(1);
3. 可接受null的Optional
Optional<Integer> object = Optional.ofNullable(1);
4. 使用 map 从 Optional 对象中提取和转换值
- Optional<User> user = Optional.ofNullable(new User());
- Optional<String> userName = user.map(User::getUserName);
-
- class User {
- private String userName;
- private Integer age;
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
- }
5. 使用 flatMap 链接 Optional 对象
- Optional<User> user = Optional.ofNullable(new User());
- String color = user.flatMap(User::getApple)
- .map(Apple::getColor).
- orElse("");
- class User {
- private String userName;
- private Integer age;
- private Optional<Apple> apple;
-
-
- public String getUserName() {
- return userName;
- }
-
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
- public Integer getAge() {
- return age;
- }
-
- public void setAge(Integer age) {
- this.age = age;
- }
-
- public Optional<Apple> getApple() {
- return apple;
- }
-
- public void setApple(Optional
apple ) { - this.apple = apple;
- }
- }
-
- class Apple {
- private String color;
-
- public String getColor() {
- return color;
- }
-
- public void setColor(String color) {
- this.color = color;
- }
- }
6. 使用 filter 剔除特定的值
Optional<User> userName = user.filter(u -> "xiaoming".equals(u.userName));
O
1. empty
返回一个空的 Optional 实例
2. filter
如果值存在并且满足提供的谓词,就返回包含该值的 Optional 对象;否则返回一个空的 Optional 对象
3. flatMap
如果值存在,就对该值执行提供的 mapping 函数调用,返回一个 Optional 类型的值,否则就返
回一个空的 Optional 对象
4. get
如果该值存在,将该值用 Optional 封装返回,否则抛出一个 NoSuchElementException 异常
5. ifPresent
如果值存在,就执行使用该值的方法调用,否则什么也不做
6. isPresent
如果值存在就返回 true,否则返回 false
7. map
如果值存在,就对该值执行提供的 mapping 函数调用
8. of
将指定值用 Optional 封装之后返回,如果该值为 null,则抛出一个 NullPointerException 异常
9. ofNullable
将指定值用 Optional 封装之后返回,如果该值为 null,则返回一个空的 Optional 对象
10. orElse
如果有值则将其返回,否则返回一个默认值
11. orElseGet
如果有值则将其返回,否则返回一个由指定的 Supplier 接口生成的值
12. orElseThrow
如果有值则将其返回,否则抛出一个由指定的 Supplier 接口生成的异常