【发布时间】:2019-07-17 14:23:03
【问题描述】:
我试图避免检查(if ... != null) 或try{...}catch(NullPointerException e) {...}
让我们举个例子来理解我的问题:
我有一个包含List<Car> 的class Park
我有一个 class Car 包含一个 Motor object
我有一个 class Motor 包含一个 Name String 值
我想从我的 Park 类中返回第一个字符串电机名称:
我想避免:
if (park != null) {
if (park.getCars() != null) {
for (Car car : park.getCars() {
if (car.getMotor() != null) {
return car.getMotor().getName();
我在想这样的事情:
Optional.ofNullable(park).map(Park::getCars).ifPresent(cars -> {
return cars.stream().map(Car::getMotor).map(Motor::getName).findFirst().orElse(null);
});
但它不会编译。有什么想法吗??
【问题讨论】:
-
你为什么突然用
ifPresent而不是map?
标签: java java-8 java-stream optional