java optional 鸡肋_Java8-Lambda编程[3] Optional接口

引言

Optional意为可选,我们前面已经提及过,主要是为了替代null的使用,避免空指针异常(NullPointerException)的出现。譬如定义下面一个类A:

class A {

private String name;

public String getName() {

return name;

}

如果我调用它的getName方法获取name字段并进行后续操作,就将会发生异常。因为我并没有为A写一个构造方法,所以name字段将会为空,如果此时对结果进行操作,比如调用length方法,将会抛出一个空指针异常,这就会很恼人。在没有Optional接口之前,我们常用的避免异常发生的方法是添加一个硬性检查。

例4.0:

String name=new A().getName;

if(name!=null)

System.out.println(name.length());

空城流云 Optional接口

上述代码并不是一个美观的写法,因为总是要在执行命令前进行检查,就好像套了一个try-catch块一样冗余丑陋。为了可以消除这样的样板代码,J8提供了Optional接口,利用它可以写出函数式风格的代码来,比如下面的变形。

例4.1:

Optional oa=Optional.ofNullable(new A());

oa.map(A::getName)

.map(String::length)

.ifPresent(System.out::println);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值