首页 >

Java8新特性Optional的用法介绍(code)

Java|java教程Java8新特性Optional的用法介绍(code)
filter,optional,java
Java-java教程
本篇文章给大家带来的内容是关于Java8新特性Optional的用法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
域名防红跳转源码,vscode 运行服务器,ubuntu 空间要求,tomcat支持什么页面,爬虫 google学术,wdlinux升级php,红桥区seo优化公司,网站后台管理系统代码,站长织梦模板lzw
Optional类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。
易订货源码下载,ubuntu平台分支,tomcat起来了访问报错,爬虫药物视频,三年php开发经验工资,万词霸屏公司找哪家seo平台lzw

1、of

为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException

仿微信客服源码 h5,vscode安装汉化包失败,ubuntu自带刻录,tomcat项目页面乱码,python爬虫 钱,php scrypt,海南短视频seo专业实操lzw
Optional optional = Optional.of(13);System.out.println(optional)

2、ofNullable

为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。

Optional optional2 = Optional.ofNullable(null);System.out.println(optional2);optional2 = Optional.ofNullable("aaa");System.out.println(optional2);

3、isPresent

如果值存在返回true,否则返回false。

Optional optional2 = Optional.ofNullable(null);System.out.println(optional2);System.out.println(optional2.isPresent());optional2 = Optional.ofNullable("aaa");System.out.println(optional2);System.out.println(optional2.isPresent());

4、get

如果Optional有值则将其返回,否则抛出NoSuchElementException。

optional2 = Optional.ofNullable("aaa");System.out.println(optional2);System.out.println(optional2.isPresent());System.out.println(optional2.get());

5、ifPresent

如果Optional实例有值则为其调用consumer,否则不做处理 。隐士地其中进行了null判断。

public static void main(String[] args) {    String str1 = "hello";    String str2 = null;    Optional optional1 = Optional.ofNullable(str1);    Optional optional2 = Optional.ofNullable(str2);    optional1.ifPresent(str->System.out.println(str.length()));    optional2.ifPresent(str-> System.out.println(str.length()));}

6、orElse

如果有值则将其返回,否则返回指定的其它值。

public static void main(String[] args) {    String str1 = "hello";    String str2 = null;    Optional optional1 = Optional.ofNullable(str1);    Optional optional2 = Optional.ofNullable(str2);    System.out.println(optional1.orElse("默认字符串"));    System.out.println(optional2.orElse("默认字符串"));}

7、orElseGet

orElseGet与orElse方法类似,区别在于得到的默认值。orElse方法将传入的一个值作为默认值,orElseGet方法可以接受Supplier接口的实现用来生成默认值

public static void main(String[] args) {    Integer i = 20;    Optional op = Optional.ofNullable(i);    System.out.println(op.orElseGet(()->0));    System.out.println(Optional.ofNullable(null).orElseGet(()->0));}

8、orElseThrow

如果有值则将其返回,否则抛出supplier接口创建的异常。

public static void main(String[] args) {    // 自己指定异常    System.out.println((Optional.ofNullable("a").orElseThrow(()->new IndexOutOfBoundsException())));    System.out.println((Optional.ofNullable(null).orElseThrow(()->new IndexOutOfBoundsException())));}

9、map

map处理有值的情况,如果有值,则对其执行调用map参数中的函数得到返回值,否则返回空Optional。

public static void main(String[] args) {   List list = new ArrayList(){       {            add("aaa");            add("bbb");            add(null);       }   };   list.stream().forEach(temp ->{        Optional opt = Optional.ofNullable(temp);        System.out.println(opt.map(n -> {           return n.toUpperCase();        }).orElse("Nothing"));   });   // 简写为如下形式    list.stream().forEach(temp->{        System.out.println(Optional.ofNullable(temp).map(n->n.toUpperCase()).orElse("Nothing"));    });}

10、flatMap

如果有值,为其执行mapping函数返回Optional类型返回值,否则返回空Optional。flatMap与map(Funtion)方法类似,区别在于flatMap中的mapper返回值必须是Optional。调用结束时,flatMap不会对结果用Optional封装。 可以将内容

public static void main(String[] args) {    Optional opt1 = Optional.ofNullable("aaa");    Optional opt2 = Optional.ofNullable(null);    System.out.println(opt1.flatMap(n->{        return Optional.ofNullable(n.toUpperCase());    }).orElse("还会没有吗"));    System.out.println( opt2.flatMap(n->{        return Optional.ofNullable(n.toUpperCase());    }).orElse("还会没有吗"));}

11、filter

如果有值并且满足断言条件返回包含该值的Optional,否则返回空Optional。

public static void main(String[] args) {    Optional opt1 = Optional.ofNullable("aabbbbaa");    Optional opt2 = Optional.ofNullable(null);    System.out.println(opt1.filter(value->value.length()>6));    System.out.println(opt2.filter(value->value.length()>6));}

好了,Java8新特性之Optional就介绍到这里了。


Java8新特性Optional的用法介绍(code)
  • Java优雅的Optional空指针处理
  • Java优雅的Optional空指针处理 | Java优雅的Optional空指针处理 ...

    Java8新特性Optional的用法介绍(code)
  • Java的哪个语法特性让你觉得写Java代码很享受? - 网络|
  • Java的哪个语法特性让你觉得写Java代码很享受? - 网络| | Java的哪个语法特性让你觉得写Java代码很享受? - 网络| ...

    Java8新特性Optional的用法介绍(code)
  • php生成xml文件 请问
  • php生成xml文件 请问 | php生成xml文件 请问 ...