import lombok.Data;
import java.util.Optional;
public class OptionalTest {
public static void main(String[] args) {
Person person = null;
//会抛出空指针异常
// Optional<Person> optional1 = Optional.of(person);
//可以接受空对象不会抛出异常
Optional<Person> optional2 = Optional.ofNullable(person);
//是否存在
System.out.println(optional2.isPresent());
//orelse 不存在的话就怎么做
person = optional2.orElse(new Person());
//or else get 接受一个函数接口
optional2.orElseGet(Person::new);
//or else 无论如何都会创建一个新对象。 or else get 则是在需要时才会创建
//----
//get方法 获取这个值 不存在时会抛出空指针异常
// Person person1 = optional2.get();
//map 方法 把值转换为另一个值
String name = optional2.map(Person::getName).orElse("default name");
System.out.println(name);
//filter 方法 判断在不在条件内
person.setAge(10);
Optional<Person> optional3 = Optional.ofNullable(person);
boolean isLt20 = optional3.map(Person::getAge).filter(a -> a < 20).filter(a->a>5).isPresent();
System.out.println("is less than 20:"+isLt20);
}
}
@Data
class Person{
private String name;
private Integer age;
}
网友评论