gpt4 book ai didi

java - 使用 Optional 避免 NPE

转载 作者:行者123 更新时间:2023-11-29 10:08:31 26 4
gpt4 key购买 nike

我试图避免检查 (if ... != null)try{...}catch(NullPointerException e) {...}

让我们举个例子来理解我的问题:

我有一个 class Park包含 List<Car>我有一个 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);
});

但它不编译。有什么想法吗??

最佳答案

假设你仅限于 java 8,你可以使用这个:

    public String findFirstMotorName(Park park) {
return Optional.ofNullable(park)
.map(Park::getCars)
.map(
cars -> cars.stream().map(Car::getMotor).map(Motor::getName).findFirst().orElse(null)
)
.orElse("No Motors Found");
}

在以后的版本中,您还可以将 Optional 转换为 Stream,这会让事情变得更流畅。

关于java - 使用 Optional 避免 NPE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57078164/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com