Java8新特性之Optional详解
来源:互联网 发布:机器码加密软件 编辑:程序博客网 时间:2024/05/23 11:58
Java8中对空值提供了一个操作类。Optional。下面介绍下他的方法。
静态方法:
Optional.of(T) 返回Optional包裹的对象,如果传入的参数为空,将抛出空指针异常。
Optional.ofNullable(T) 返回Optional包裹的对象,参数如果为空返回空的Optional对象。
Optional.empty() 返回空的Optional对象。
实例方法:
isPresent() 是否存在,如果值为空返回false,否则返回true
get()值存在返回值否则抛出异常
map()值存在的情况下执行自定义方法,传入参数是值,返回可以是任意类型的对象。
filter()值存在的情况下执行自定义方法,传入参数是值,返回true或false。
flatMap()与map方法基本一致,不同的是,返回类型只能是值得类型。
代码如下:
package com.example.thread;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.Optional;
import java.util.Random;
public class OptaionalTest {
private static Logger logger = LoggerFactory.getLogger(OptaionalTest.class);
public static void main(String[] args) {
OptaionalTest obj = new OptaionalTest();
Optional<Integer> optional = obj.getNum();
logger.info("optional.isPresent():" + optional.isPresent());
optional.ifPresent((val1) -> {//值是否存在
logger.info("optional.ifPresent():" + optional.get());
logger.info("optional.get():" + optional.get());
String map = optional.map((intVal) -> (intVal + 1000) + "").get();//map的返回值可以是任何类型的.
logger.info("optional.map():" + map);
optional.filter((intVal) -> {//新的方法以值为参数
if (intVal > 25) {
logger.info("optional.filter()>25:" + intVal);
return true;
}
logger.info("optional.filter()<=25:" + intVal);
return false;
});
Optional<Integer> a = optional.flatMap((intVal) -> Optional.ofNullable(intVal + 1));//返回值必须是Optional类型的
});
logger.info("optional.orElse:" + optional.orElse(1));
logger.info("" + optional.orElseGet(() ->
{
logger.info("optional.orElseGet:" + -1);
return -1;
}));
}
Optional<Integer> getNum() {
Integer num = new Random().nextInt(100);
if (num < 50) {
return Optional.empty();
}
return Optional.of(num);
}
}
阅读全文
0 0
- Java8新特性之Optional详解
- java8新特性--optional
- Java8 新特性之 Optional 类
- 详解Java8特性之Optional类
- Java8新特性 - Optional类
- Java8新特性 - Optional类
- java8新特性---Optional类
- java8新特性(八):Optional
- Java8新特性——Optional
- java8新特性之stream详解
- Java8新特性之CompletableFuture详解
- Java8新特性详解
- Java8新特性详解
- JAVA8 新特性详解
- java8新特性详解
- JAVA8新特性详解
- JDK8新特性之Optional
- Java8 新特性之六---------新类库Optional、Streams、Date/Time API(JSR 310)
- 网络编程(TCP)
- Laravel关系模型指定条件查询
- 用几张图片教你相关的IT知识
- Java并发编程——线程池的使用(一) 简单创建线程池
- 7-36 复数四则运算
- Java8新特性之Optional详解
- H5跳转到APP指定页面
- SpringMVC的各种参数绑定方式
- 只要7步就能画出专业的PERT图,你确定不看看?
- 深度学习之数学基础(2)
- iOS 用最简单的方法做缓存
- SparkSql之DataFrame操作
- ORACLE定期清理INACTIVE会话
- AI新贵「蓦然认知」首秀,这个和百度"有点关系"的公司要让机器认知世界