java8 Optional正确使用姿势

简介:

Java 8 如何正确使用 Optional

复制代码
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.ToString;
import org.apache.commons.lang3.StringUtils;

import java.util.Optional;

@Data
@EqualsAndHashCode(exclude={"self"})
@ToString(callSuper=true, exclude="self")
public class PersonDto {
    private Integer id;
    private String name;
    private String password;

    private Double self;

    public boolean validateName1() {
        return StringUtils.equals("hjz", name);
    }

    public static boolean validateName2(String name) {
        return StringUtils.equals("hjz", name);
    }

    public static void main(String[] args) {
        PersonDto personDto = new PersonDto();
        personDto.setName("hjz");
//        String name = Optional.ofNullable(personDto)
//                .map(obj -> obj.getName())
//                .filter(StringUtils::isNotEmpty)
//                .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));

//        String name = Optional.ofNullable(personDto)
//                .map(obj -> obj.getName())
//                .filter(PersonDto::validateName2)
//                .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));

        String name = Optional.ofNullable(personDto)
                              .filter(PersonDto::validateName1)
                              .map(obj -> obj.getName())
                              .orElseThrow(()->new IllegalArgumentException("The value of param personDto isn't available."));
        System.out.println(name);
    }
}
复制代码









本文转自 小眼儿 博客园博客,原文链接:http://www.cnblogs.com/hujunzheng/p/7299572.html,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
Java Unix 程序员
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
java 8 新特性讲解Optional类--Fork/Join 框架--新时间日期API--以及接口的新特性和注解
62 1
|
6月前
|
Java 程序员 API
Java8特性第三讲:如何使用Optional类优雅解决业务npe问题
Java8特性第三讲:如何使用Optional类优雅解决业务npe问题
|
18天前
|
存储 Java API
java8新特性 lambda表达式、Stream、Optional
java8新特性 lambda表达式、Stream、Optional
|
29天前
|
Java
Java8 Optional
Java8 Optional
11 0
|
1月前
|
安全 Java 开发者
Java 8 `Optional` 类的用法和优势
【2月更文挑战第15天】
13 0
|
1月前
|
存储 Java
java8新特性-Optional
java8新特性-Optional
18 0
|
2月前
|
JSON 安全 Java
JAVA8实战 - Optional工具类
JAVA8实战 - Optional工具类
85 0
|
3月前
|
安全 Java 程序员
Dating Java8系列之巧用Optional之优雅规避NPE问题
Dating Java8系列之巧用Optional之优雅规避NPE问题
21 0
|
3月前
|
架构师 Java 测试技术
Java 编程问题:十二、`Optional`
Java 编程问题:十二、`Optional`
43 0
|
3月前
|
Java 程序员 容器
Java8新特性 Optional类
Java8新特性 Optional类
25 0