1)例子1
package org.example.testOptional;
import lombok.Data;
import lombok.ToString;
import java.util.Optional;
public class Main {
public static Optional<A> getOpA() {
return Optional.ofNullable(null);
}
public static void main(String[] args) {
getOpA().map(a -> a.getB())
.ifPresent(a -> {
System.out.println(a);
});
}
}
@Data
@ToString
class A {
private String desc = "aaa";
private int b = 1;
}
2)例子2
package org.example.testOptional;
import java.util.Optional;
public class UnitObject {
private int id = 1;
public UnitObject() {
}
public UnitObject getOwner() {
return null;
}
public UnitObject getOwnerOrSelf() {
// 找主人,主人找不到则就是自己
UnitObject o = Optional.ofNullable(getOwner()).orElse(this);
return o;
}
@Override
public String toString() {
return "Main2{" +
"id=" + id +
'}';
}
public static void main(String[] args) {
UnitObject unitObject = new UnitObject().getOwnerOrSelf();
System.out.println(unitObject);
}
}
/*
Main2{id=1}
*/
结论:
之前不太理解为啥会出现Optional,我自己直接 != null判断不就行了,其实,这个相当于给人一个警示作用,告诉此处可能存在空指针。
而且,还有回调的写法,去避免空指针问题。