java8 Optional正确使用姿势

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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);
    }
}

 

以上是关于java8 Optional正确使用姿势的主要内容,如果未能解决你的问题,请参考以下文章

java8 Optional正确使用姿势

Java8新特性 Optional的正确使用姿势,真的不来稍微了解一下吗?

还看不懂同事的代码?超强的 Stream 流操作姿势还不学习一下

java8的正确使用姿势

java8--- Optional使用 - 进阶1 - 经验总结

java代码(16) ---Java8 Optional