java Optional类

Java 8 引入的 Optional 类,主要解决的问题是空指针异常(NullPointerException)

返回值/修饰符 方法 详细
static Optional empty()
返回一个空的 Optional实例。
Optional stringOptional = Optional.empty();
boolean equals(Object obj)
判断对象是否相等
Optional stringOptional1 = Optional.of(user);
Optional stringOptional2 = Optional.of(user);
boolean equals = stringOptional1.equals(stringOptional2);
Optional filter(Predicate predicate)
根据条件筛选
UserDto user=new UserDto();
user.setKeyword(“asd”);
Optional optionalUserDto = Optional.of(user).filter(u->u.getKeyword().equals(“asd”));
符合条件的话,就把值赋给optionalUserDto
Optional flatMap(Function> mapper)
如果一个值存在,应用提供的 Optional映射函数给它,返回该结果,否则返回一个空的 Optional 。
Optional stringOptional = Optional.of(user).flatMap(u -> Optional.ofNullable(u.getKeyword()));
如果u.getKyword不为空,返回一个Optional对象
T get()
如果 Optional中有一个值,返回值,否则抛出 NoSuchElementException 。
获取Optional包含的对象,String str = stringOptional.get();
int hashCode()
返回当前值的哈希码值(如果有的话),如果没有值,则返回0(零)。
void ifPresent(Consumer consumer)
如果存在值,则使用该值调用指定的消费者,否则不执行任何操作。
Optional optionalValue = Optional.of(“Hello”);
optionalValue.ifPresent(value -> {
System.out.println("Value is present: " + value);
// 在这里可以对 value 进行处理
});
Optional emptyOptional = Optional.empty();
emptyOptional.ifPresent(value -> {
// 这段代码不会执行,因为 emptyOptional 中没有值
System.out.println("Value is present: " + value);
});
boolean isPresent()
返回 true如果存在值,否则为 false 。
Optional optionalValue = Optional.of(“Hello”);
//如果值存在
if(optionalValue.isPresent()) {
}
Optional map(Function mapper)
如果存在一个值,则应用提供的映射函数,如果结果不为空,则返回一个 Optional结果的 Optional 。
Optional optionalValue = Optional.of(“Hello”);
String abc = optionalValue.map(u -> u).orElse(“abc”); 直接返回optionalValue,如果空返回"abc"
static Optional of(T value)
返回具有 Optional的当前非空值的Optional。
Optional abc = Optional.of(“abc”); 返回一个字符串类型的Optional对象,如果为null报错NullPointerException
static Optional ofNullable(T value)
返回一个 Optional指定值的Optional,如果为空,则返回一个空的 Optional 。
Optional abc = Optional.ofNullable(“abc”); 返回一个字符串类型的Optional对象,可以为null
T orElse(T other)
返回值如果存在,否则返回 other 。
String msg=null;
String str=Optional.ofNullable(msg).orElse(“abc”);
如果msg不为null,直接返回msg,否则返回"abc"
T orElseGet(Supplier other)
返回值(如果存在),否则调用 other并返回该调用的结果。
String msg=null;
String str=Optional.ofNullable(msg).orElseGet(()->“asd”);
有值的时候返回值,如果没有值,它会执行作为参数传入的 Supplier(供应者) 函数式接口,并将返回其执行结果:

T
orElseThrow(Supplier exceptionSupplier)
返回包含的值(如果存在),否则抛出由提供的供应商创建的异常。
String str=Optional.ofNullable(msg).orElseThrow(()->new RuntimeException(“null”));
对象为null时抛出一个异常
String toString()
返回此可选的非空字符串表示,适用于调试。

你可能感兴趣的:(java)