java8之Optional

it2023-01-04  67

JDK8 之 optional类

前言 :

Optional类实际上是个容器:它可以保存类型T的值,或者仅仅保存null。Optional 类的引入很好的解决空指针异常。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。尽量避免在程序中直接调用Optional对象的get()和isPresent()方法,避免使用Optional类型声明实体类的属性。

Optional.of(T t) : 创建一个 Optional 实例Optional.empty() : 创建一个空的 Optional 实例Optional.ofNullable(T t):若 t 不为 null,创建 Optional 实例,否则创建空实例isPresent() : 判断是否包含值orElse(T t) : 如果调用对象包含值,返回该值,否则返回torElseGet(Supplier s) :如果调用对象包含值,返回该值,否则返回 s 获取的值map(Function f): 如果有值对其处理,并返回处理后的Optional,否则返回Optional.empty()flatMap(Function mapper):与 map 类似,要求返回值必须是Optional

示例1:

/* 当对象为null时,可使用ofnullable 判断是否为null,若为null则赋值为一个初始化对象 */ Integer num = null; num = Optional.ofNullable(num).orElse(0); /* 给定一个实体对象, 返回一个optional<该实体类型>对象 */ AppleTest appleTest = new AppleTest(); appleTest.setColor("黄色"); appleTest.setWight("10"); Optional<AppleTest> a = Optional.of(appleTest); a.orElse(new AppleTest()); /* 判断是否存在 */ if (a.isPresent()){ /* get 获取当前对象 */ a.get().getColor(); } /* 当前optional实体对象若为空时 => 接受一个函数式接口 使用lambda表达式 */ a.orElseGet(AppleTest::new); try { /* 当前optional实体对象若为空时 => 抛出一个异常 */ a.orElseThrow(()-> new Exception("当前对象为空")); } catch (Exception e) { e.printStackTrace(); }
最新回复(0)