在此,这种操作与三目运算效果一样 。
str != null ? str : "--"orElseGet获取Optional中的值
orElseGet()方法与orElse()方法作用类似,但生成默认值的方式不同 。该方法接受一个Supplier函数式接口参数,用于生成默认值;
Optional.empty().orElseGet(() -> { String a = "关注"; String b = "公众号:程序新视界"; return a + b; });很显然,这里可以处理更多的业务逻辑 。
orElseThrow获取Optional中的值
orElseThrow()方法与get()方法类似,当值为null时调用会抛出NullPointerException异常,但该方法可以指定抛出的异常类型 。
Optional.empty().orElseThrow(()-> new RuntimeException("请先关注公众号!"));此时打印异常信息为:
Optional.empty().orElseThrow(()-> new RuntimeException("请先关注公众号!"));判断并执行操作
ifPresent方法,可对值进行判断然后打印,接收参数为Consumer函数式接口 。
Optional.of("公众号:程序新视界").ifPresent(System.out::println);当然,也可以在函数中执行其他复杂操作:
Optional.of("公众号:程序新视界").ifPresent((val)->{ System.out.println("欢迎关注" + val); });filter()方法过滤
filter()方法可用于判断Optional对象是否满足给定条件,一般用于条件过滤:
Optional.of("公众号:程序新视界").filter((val)->{ return val.contains("程序新视界");});// 简化写法Optional.of("公众号:程序新视界").filter((val)-> val.contains("程序新视界"));使用误区关于使用Optional的误区有以下:
- 正确的使用创建方法,不确定是否为null时尽量选择ofNullable方法 。
- 避免用在成员变量上(原因上面已经提到);
- 避免直接调用Optional对象的get和isPresent方法;
Java8提倡函数式编程,新增的许多API都可以用函数式编程表示,Optional类也是其中之一 。
最后,我自己是一名从事了多年开发的JAVA老程序员,今年年初我花了一个月整理了一份最适合2019年学习的java学习干货,可以送给每一位喜欢java的小伙伴,想要获取的可以关注我的头条号并在后台私信我:java,即可免费获取 。
作者:secbro2
来源:掘金
推荐阅读
- 张元新春民俗节开幕 现场购茶抢爆棚
- 莒南洙边镇,茶旅结合 茶叶之乡耀新景
- 何晴之,长沙茶业升级 茶叶品牌建设再上新台阶
- 福安发展茶树优新品种 助农增收六千余万元
- 购茶当心被忽悠 应如何辨别新茶和陈茶
- 骨质疏松症可防可治
- 白帆布鞋洗完为什么容易发黄
- 找不到工作?你可能没注意到这些新兴就业方向
- 产品 模式创新促推福州茉莉花茶掀起新热潮
- 最新绘图软件排行 常用的绘图软件