如何处理 Java 中的空值(eclipse IDE)
How to handle null values in Java (eclipse IDE)
我正在开发 API(Eclipse IDE - 开普勒),JDK 1.7)
我需要一个捷径
@IfNotNullUpdate
考虑以下内容,例如
Model model = new Model();
String field1 = entity.getField1() != null ? entity.getField1() : "";
model.setField1(field1);
这样我就可以简单地写成
model.setField1( @IfNotNullUpdate entity.getField1(),"");
我不想有任何 NullPointerExceptions。如果它能像构建器模式一样工作,那将是一个很大的帮助。例如
model.addField_25(@IfNotNullUpdate entity.getField_37())
.addField_16(@IfNotNullUpdate entity.getField_69());
我尝试了 lombok 的@NonNull。它只是确保 param 不为空,这不是我的要求。
当然,assert() 也不是解决方案。希望我能够很好地解释我的需求。
提前致谢。
你为什么不只使用一种方法呢?如果需要,您可以将其设为静态,以便您可以通过类名访问它。或者将您需要的辅助方法放在 oneClass 中并扩展它。
public String getFieldValue(Object o ){
if(o instanceof someEntity){
someEntity se = (someEntity) o
if(someEntity.getField() != null){
return someEntity.getField();
}else{
return "";
}
}else if(o instanceof someOtherEntity){
...
}
}
您需要为此目的或您的任何目的构建自定义注释。您可以使用 @Target(ElementType.PARAMETER)
为您创建一个注释,并根据需要使用反射来映射它。但这是一个漫长的过程,不需要您花费太多时间。相反,只需编写一个方法并调用它即可。
我想不出 API 是现成的。正如您所指出的,lombok 不会为您这样做。
看看Optional
。使用提供的示例,如果调用 returns 的任何方法为空值,则以下代码可能会抛出 NPE:
String version = computer.getSoundcard().getUSB().getVersion();
为了避免这种或过多的 if (x != null)
检查,使用 Optional
你可以使用:
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");
我正在开发 API(Eclipse IDE - 开普勒),JDK 1.7) 我需要一个捷径 @IfNotNullUpdate
考虑以下内容,例如
Model model = new Model();
String field1 = entity.getField1() != null ? entity.getField1() : "";
model.setField1(field1);
这样我就可以简单地写成
model.setField1( @IfNotNullUpdate entity.getField1(),"");
我不想有任何 NullPointerExceptions。如果它能像构建器模式一样工作,那将是一个很大的帮助。例如
model.addField_25(@IfNotNullUpdate entity.getField_37())
.addField_16(@IfNotNullUpdate entity.getField_69());
我尝试了 lombok 的@NonNull。它只是确保 param 不为空,这不是我的要求。
当然,assert() 也不是解决方案。希望我能够很好地解释我的需求。
提前致谢。
你为什么不只使用一种方法呢?如果需要,您可以将其设为静态,以便您可以通过类名访问它。或者将您需要的辅助方法放在 oneClass 中并扩展它。
public String getFieldValue(Object o ){
if(o instanceof someEntity){
someEntity se = (someEntity) o
if(someEntity.getField() != null){
return someEntity.getField();
}else{
return "";
}
}else if(o instanceof someOtherEntity){
...
}
}
您需要为此目的或您的任何目的构建自定义注释。您可以使用 @Target(ElementType.PARAMETER)
为您创建一个注释,并根据需要使用反射来映射它。但这是一个漫长的过程,不需要您花费太多时间。相反,只需编写一个方法并调用它即可。
我想不出 API 是现成的。正如您所指出的,lombok 不会为您这样做。
看看Optional
。使用提供的示例,如果调用 returns 的任何方法为空值,则以下代码可能会抛出 NPE:
String version = computer.getSoundcard().getUSB().getVersion();
为了避免这种或过多的 if (x != null)
检查,使用 Optional
你可以使用:
String name = computer.flatMap(Computer::getSoundcard)
.flatMap(Soundcard::getUSB)
.map(USB::getVersion)
.orElse("UNKNOWN");