lombok tobuilder零位检查

jtjikinw  于 2021-07-13  发布在  Java
关注(0)|答案(1)|浏览(391)

我有一个使用lombok@builder注解的场景,以前我使用的是静态的内部生成器类,但是现在使用lombok我删除了它。
但是我在下面的代码行中看到了null取消引用的强化问题。这也是有意义的,因为我在使用tobuilder之前检查null,但是在使用tobuilder之后我没有检查null。如何修复这个强化问题,我应该在使用tobuilder时再次对“requestcheck”执行null检查吗。requestcheck是foo类型的对象。

public Foo checkLatestMessage(Foo requestCheck){

if (requestCheck != null && requestCheck.isCheckLatestMessage()) { // null check
  getLatestMessage(messages);
}

if (someOtherCondition) {
  return requestCheck.toBuilder().addMessages(messages).build(); //Null dereference
}
}

以前,当我使用静态内部生成器类而不是lombok时,我用以下方式编写代码,lombok没有提供任何强化问题。如何使用lombok生成器实现同样的功能,以便不必执行空检查。

return new Foo.Builder(requestCheck).addMessages(messages).build();
q3aa0525

q3aa05251#

如果可能的话 requestCheck 成为一个 null ,则应正确处理。

public Foo checkLatestMessage(Foo requestCheck){
    if (requestCheck != null)  { // null check
        if(requestCheck.isCheckLatestMessage()) {
            getLatestMessage(messages);
        }
        if (someOtherCondition) {
            return requestCheck.toBuilder().addMessages(messages).build();
        }
    }
}

或者你可以尽快回来 requestCheck 为空。

public Foo checkLatestMessage(Foo requestCheck){
    if (requestCheck == null)  { // null check
        return null;
    }    
    if(requestCheck.isCheckLatestMessage()) {
        getLatestMessage(messages);
    }
    if (someOtherCondition) {
        return requestCheck.toBuilder().addMessages(messages).build();
    }
}

相关问题