使用Optional而不是null检查



我必须检查对象的属性是否为null。根据上面的检查,我必须更新同一对象中的另一个属性。是否可以使用Optional类及其方法来替换null检查?

if(userData.getSubscription()==null){
userData.setFees(Enum.ZERO);
} else {
userData.setFees(Enum.HUNDRED);
}

让我知道这是否可以用一行使用Java8Optional类或其他功能来替换。

也许您想要:userData.setFees(Objects.isNull(userData.getSubscription()) ? Enum.ZERO : Enum.HUNDRED)

你可以做一些类似的事情

Optional::ofNullable(userData.getSubscription()).map(any -> Enum.HUNDRED).orElse(Enum.ZERO);

然而,我认为这对@t.J.Crowder在评论中的建议没有多大好处

userData.getSubscription() == null ? Enum.ZERO : Enum.HUNDRED

Optional的主要用途是防止您忘记检查null。因此,只有从getSubscription()返回Optional类型时才有用。然后你可以做:

userData.setFees(userData.getSubscription().map(x -> Enum.HUNDRED).orElse(Enum.ZERO));

但是,如果您不能或不想更改getSubscription()以返回Optional,那么在这里使用Optional就没有意义了。只需这样做:

userData.setFees(userData.getSubscription() == NULL ? Enum.ZERO : Enum.HUNDRED);

顺便说一句,如果Enum.ZEROEnum.HUNDRED只是代表0和100的名称,那么这不是一个好主意。单词";ZERO";以及";一百";同样是一个";幻数";作为数字0和100本身。你应该给你的枚举命名一些描述性的东西,比如";FREE_OF_CHARGE";以及";FULL_PRICE";。

相关内容

  • 没有找到相关文章

最新更新