Optional.ofNullable(user).ifPresent(u->
{ // TODO: do something }
);
if(Objects.isNull(Object)){//todo为空执行}else{//todo不为空执行}
ofNullable是返回当前数据或者一个空的Optional,ifPresent的返回是void是没法操作的。我用到Optional的时候一般是为null的时候返回一个默认值,optional不是用来做do something这种判断的工具,不要什么都想着用java8解决。附上我用到Optional的情况
public enum Sex {
MAN(1),WOMAN(2),UNKOW(0);
private int type;
Sex(int type) {
this.type = type;
}
public int getType() {
return type;
}
public static Sex getSex(int type){
return Stream.of(Sex.values())
.filter(o -> o.getType() == type)
.findFirst() //Optional<Sex> 如果里面为null的时候返回else中的值
.orElse(UNKOW);
}
}
Optional<String>.ofNullable(null).orElseGet(()->{
// TODO: 2019/12/26
return "2345";
});
注意要返回一个一致的泛型就行。
Optional.ofNullable(
Optional.ofNullable(null).orElseGet(() -> {
// TODO: 空 返回null,为了后面的判断非空
System.out.println("空");
return null;
}))
.ifPresent(t -> {
// TODO: 不为空
System.out.println("非空");
});