本帖最后由 saz 于 2021-11-26 15:41 编辑
Optional类
可能包含或者不包含非空值的容器对象。
如果一个值存在,isPresent()将返回true,并且使用get()方法获取值
JDK1.8 API
Modifier and Type |
Method and Description |
static Optional |
empty() <br>返回一个空的 Optional 实例。 |
boolean |
equals(Object obj) <br/>指示某个其他对象是否等于此可选项。 |
Optional |
filter(Predicate predicate) <br/>如果一个值存在,并且该值给定的谓词相匹配时,返回一个 Optional 描述的值,否则返回一个空的 Optional 。 |
Optional |
flatMap(Function> mapper) <br/>如果一个值存在,应用提供的 Optional 映射函数给它,返回该结果,否则返回一个空的 Optional 。 |
T |
get() <br/> 如果 Optional 中有一个值,返回值,否则抛出 NoSuchElementException 。 |
int |
hashCode() <br/>返回当前值的哈希码值(如果有的话),如果没有值,则返回0(零)。 |
void |
ifPresent(Consumer consumer) <br/>如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。 |
boolean |
isPresent() <br/>返回 true 如果存在值,否则为 false 。 |
Optional |
map(Function mapper) <br/>如果存在一个值,则应用提供的映射函数,如果结果不为空,则返回一个 Optional 结果的 Optional 。 |
static Optional |
of(T value) <br/>返回具有 Optional 的当前非空值的Optional。value是null,将抛异常 |
static Optional |
ofNullable(T value) <br/> 返回一个 Optional 指定值的Optional,如果非空,则返回一个空的 Optional 。 |
T |
orElse(T other) <br/>返回值如果存在,否则返回 other 。 |
T |
orElseGet(Supplier other) <br/>返回值(如果存在),否则调用 other 并返回该调用的结果。 |
T |
orElseThrow(Supplier exceptionSupplier) <br/>返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。 |
String |
toString() <br/>返回此可选的非空字符串表示,适用于调试。 |
Optional.empty();
/**
* Optional.empty();
*/
@Test
public void test01(){
Optional<Employee> emp = Optional.empty();
Employee employee = emp.orElse(null);
System.out.println(employee); // null
}
Optional.ofNullable()
Optional.of()
/**
* Optional.ofNullable() && Optional.of()
*/
@Test
public void test02(){
List<Employee> empOpt = Optional.ofNullable(employees)
.orElseGet(()-> { return new ArrayList<>();});
System.out.println(empOpt);
Optional<Object> o = Optional.of(null); // throw NullPointerException
System.out.println(o);
}
Optional map(Function fun)
/**
* Optional map(Function fun)
*/
@Test
public void test04(){
Optional<String> name = Optional.of(" 萧瑟 ");
Optional<String> s = name.map(v -> v.trim());
System.out.println(s.orElse("萧楚河"));
}
T orElseGet(Supplier sup)
/**
* T orElseGet(Supplier sup)
*/
@Test
public void test05(){
Optional<String> name = Optional.empty();
System.out.println(name.isPresent()); // false
System.out.println(name.orElseGet(()->"萧楚河")); // 萧楚河
}
|