java8optional类深度解析-java开发java经验技巧

java8optional类深度解析-java开发java经验技巧

ID:30768775

大小:98.50 KB

页数:8页

时间:2019-01-03

java8optional类深度解析-java开发java经验技巧_第1页
java8optional类深度解析-java开发java经验技巧_第2页
java8optional类深度解析-java开发java经验技巧_第3页
java8optional类深度解析-java开发java经验技巧_第4页
java8optional类深度解析-java开发java经验技巧_第5页
资源描述:

《java8optional类深度解析-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Java8Optional类深度解析-Java开发Java经验技巧Java8Optional类深度解析木文由ImportNew・高俊阳翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。身为一名九腹程序员,大家可能都有这样的经历:调用一个方法得到了返回值却不能直接将返回值作为参数去调用别的方法。我们首先耍判断这个返回值是否为null,只冇在非空的前捉下才能将其作为其他方法的参数。这正是一些类似Guava的外部API试图解决的问题。一些JVM编程语言比如Scala、Ceylon等己经将对在核心API屮解决了这个问题。在我的

2、前一篇文章屮,介绍了Scala是如何解决了这个问题。新版本的Java,比如Java8引入了一个新的Optional类<>Optional类的Javadoc描述如下:这是一个可以为null的容器对彖。如果值存在则isPresent()方法会返冋true,调用get()方法会返冋该对象。本文会逐个探讨Optional类包含的方法,并通过一两个示例展示如何使用。of为非null的值创建一个Optionaloof方法通过工厂方法创建Optional类。需要注意的是,创建对彖时传入的参数不能为null。如果传入参数为null,则抛出NullPoin

3、terException。//调用工厂方法创建Optional实例Optionalname=Optiona1.of("Sdnaulla");//传入参数为null,抛岀NullPointerException.OptionaKStr、ing>someNull二Optional.of(null);ofNulTable为指定的值创建一个Optional,如果指定的值为nul1,则返回一个空的OptionaloofNullable与of方法相似,唯一的区别是可以接受参数为null的情况。示例如下://下面创建了一个不包含任何值的

4、Optional实例〃例如,值为’null'Optioneilempty=Optiona1.ofNullable(null);isPresent非常容易理解如果值存在返冋true,否则返冋false。类似下面的代码://isPresent方法用來检查Optional实例中是否包含值if(namc.isPresent()){//在Optional实例内调用get()返回已存在的值System.out.printin(name.get());//输丨I]Sanaulla}get如果Optional有值则将其返回,否则抛出NoSuchEleme

5、ntException。上面的示例中,get方法用來得到Optional实例中的值。下面我们看一个抛出NoSuchElementException的例子://执彳亍下面的代码会输出:Novaluepresenttry{//在空的Optional实例上调用get(),抛出NoSuchElementExceptionSystem,out.printin(empty,get());}catch(NoSuchElementExceptionex){System,out.printin(ex.getMessage());}ifPresent如果Op

6、tional实例有值则为其调用consumer,否则不做处理要理解ifPresent方法,首先需要了解Consumer类。简答地说,Consumer类包含一个抽象方法。该抽象方法对传入的值进行处理,但没冇返回值。支持不用接口直接通过lambda表达式传入参数。如果Optional实例有值,调用ifPresent()可以接受接口段或lambda表达式。类似下面的代码://ifPresent方法接受1ambda表达式作为参数。//lambda表达式对Optional的值调用consumer进行处理。namc.ifPrcscnt((value)

7、->{System.out・printin("Thelengthofthevalueis:"+value,length());});orElse如果有值则将其返回,否则返回指定的其它值。如果Optional实例有值则将其返冋,否则返冋orElse方法传入的参数。示例如下://如果值不为nul1,orElse方法返回Optional实例的值。//如果为null,返回传入的消息。//输岀:Thereisnovaluepresent!System,out.printin(empty.orElse(,zThereisnovaluepresent!

8、,z));//输出:SanaullaSystem,out.printin(name.orElse(^Thereissomevalue!"));orElseGetorElseGet与orElse

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。