龙目岛 toBuilder 空检查
Lombok toBuilder Null Check
我有一个使用 Lombok @Builder 的场景 annotation.Previously 我使用静态内部构建器 class 但现在使用 Lombok 我删除了它。
但是我在 code.Also 的以下行中看到 null 取消引用的强化问题,这是有道理的,因为我之前正在检查 null 但后来使用 toBuilder 时我没有检查 null.How 我可以吗解决这个强化问题,我应该在使用 toBuilder 时再次对“requestCheck”进行空检查吗?
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
}
}
以前当我使用静态内部构建器 class 而不是 Lombok 时,我用以下方式编写了代码,它没有提供任何强化 issue.How 我可以用 Lombok Builder 实现同样的事情吗这样我就不必进行空检查了。
return new Foo.Builder(requestCheck).addMessages(messages).build();
如果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();
}
}
}
或者您可以 return 只要 requestCheck
为 null。
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();
}
}
我有一个使用 Lombok @Builder 的场景 annotation.Previously 我使用静态内部构建器 class 但现在使用 Lombok 我删除了它。
但是我在 code.Also 的以下行中看到 null 取消引用的强化问题,这是有道理的,因为我之前正在检查 null 但后来使用 toBuilder 时我没有检查 null.How 我可以吗解决这个强化问题,我应该在使用 toBuilder 时再次对“requestCheck”进行空检查吗? 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
}
}
以前当我使用静态内部构建器 class 而不是 Lombok 时,我用以下方式编写了代码,它没有提供任何强化 issue.How 我可以用 Lombok Builder 实现同样的事情吗这样我就不必进行空检查了。
return new Foo.Builder(requestCheck).addMessages(messages).build();
如果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();
}
}
}
或者您可以 return 只要 requestCheck
为 null。
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();
}
}