学习来源:《Java8 实战》 Gabriel Urma 微信读书


文章目录

Optional API

方法

描述

empty

放hi一个空的Optional对象

filter

返回满足谓词的对象

flatMap

待续

get

返回封装的对象

ifPresent

如果该值存在就执行该值的方法调用 否则什么都不做

map

of

Optional

ofNullable

如果对象为空就返回一个空的值

orElse

如果为空返回函数值

OrElseGet

如果不存在 就返回一个指定接口生成的值

orElseThrow

顾名思义

代码

辅助类

@Data
@NoArgsConstructor
public class Person {

private String name;

private Integer age;

public Person(String name, Integer age) {
this.name = name;
this.age = age;
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}
}

测试类

@Test
public void test1() throws Exception {
// 1. 创建
Optional<String> tom = Optional.ofNullable("Tom");
// 2. 如果确定不不为空就用下面这个
Optional<String> t = Optional.of("Tom");

// 1. 如果不为空就返回该值 为空就返回lambda表达式的值
System.out.println(tom.orElseGet(()-> {
return "Git";
}));
// 2. 如果存在就返回该值 否则返回抛出异常
String s = tom.orElseThrow(() -> new Exception());
// 3. 如果不存在 就重新创建值
Optional.ofNullable(12).orElse(100);


/**
* filter
* map
* flatMap
*/
// 1. 如果该对象的属性不满足既定要求即返回空值
Optional.ofNullable(100).filter(val -> {return val>10;});
// 2. 如果存在获取对象的值
Person person = new Person("Tom",15);
Optional<Person> person1 = Optional.of(person);
person1.map(u -> u.getName()).orElse("s");
// 3. flatMap 要求返回值也是Optional 类型
person1.flatMap(v -> Optional.ofNullable(v.getName()));

// 1. 判断对象是否存在
System.out.println(tom.isPresent());
// 2. 如果存在就对该值进行加工处理
tom.ifPresent(value->{value = value + " Hello";});


}