Optional 简单使用方法

它是Java 8 之后推出来的一个可以为null的容器对象

作用就是用来避免空指针异常(NullPointerException)

话不多说,直接来看简单的实用方法

 Optional类的常用方法

isPresent():判断是否包含值,包含值返回true,不包含值返回false
get():如果Optional有值则将其返回,否则抛出NOSuchElementException
orElse(T t):如果调用对象包含值,返回该值,否则返回参数t
orElseGet(supplier s):如果调用对象包含值,返回该值,否则返回s获取的值
map(Function f):如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()

 常用的一般if判空方法:

public class OptionalTest {
    public static void main(String[] args) {
        //创建对象
        Student student = new Student("Dear Zero Two",19,100);
        //if方法
        if (student.getName()!=null){
            System.out.println("Student's name:"+student.getName());
        }
    }
}

下面来看看optional用法

public class OptionalTest {
    public static void main(String[] args) {
        //创建对象
        Student student = new Student("Dear Zero Two",19,100);

        //optional用法
        //将student放到Optional容器中,返回一个optionalStudent对象
        Optional<Student> optionalStudent = Optional.ofNullable(student);

        //map -> 接收Function -> 实现apply方法 -> 拿到name值
        optionalStudent.map(new Function<Student, String>() {

            @Override
            public String apply(Student student) {
                return student.getName();
            }
        });
             
    }
}

之后进一步简化,可使用快捷键alt+enter转化成lambda表达式

//isPresent -> 接收consumer -> 实现accept方法 ->输出name值
       optionalStudent.map(student1 -> student1.getName()).ifPresent(new Consumer<String>() {
            @Override
            public void accept(String s) {

            }
        });

如上操作进一步简化

optionalStudent.map(student1 -> student1.getName()).ifPresent(s -> {
            System.out.println(s);
        });

最终简化代码:

optionalStudent.map(Student::getName).ifPresent(System.out::println);

控制台打印结果: 

以上就是我对这个optional的这个分享,希望对大家有用

自我感觉就是可以让代码更优雅一些。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值