是否有更简洁的方式来编写
Form_Load
例如,对于Strings,您可以使用StringUtils.isBlank()
答案 0 :(得分:9)
使用Java 8:
if (Optional.ofNullable(myInteger).orElse(0) != 0) {
...
}
请注意Optional
可以帮助您完全避免if条件,具体取决于您的使用情况......
答案 1 :(得分:3)
我会为此使用三元条件。类似的东西:
public static boolean isNullorZero(Integer i){
return 0 == ( i == null ? 0 : i);
}
这是不可读的,我同意;)
答案 2 :(得分:1)
由于在问题中提到了td table {
background: url(path/to/background.png);
background-size: contain;
}
类,因此我认为项目中已经使用了Apache Commons lib。
然后您可以使用以下内容:
StringUtils
或使用静态导入:
if (0 != ObjectUtils.defaultIfNull(myInteger, 0)) { ... }
答案 3 :(得分:1)
我创建了一个可以帮助您的助手方法,它使用反射,因此您必须考虑是否有必要使用它,还需要Java 8。
该方法适用于所有Java数字:
public class NumberUtils {
private NumberUtils(){
}
public static < T extends Number> T getNumberOrZero(T number, Class<? extends Number> clazz) {
return Optional.ofNullable(number)
.orElse(getZeroValue(clazz));
}
@SuppressWarnings("unchecked")
private static < T extends Number> T getZeroValue( Class<? extends Number> clazz){
try{
Constructor<? extends Number> constructor = clazz.getDeclaredConstructor(String.class);
return (T) constructor.newInstance("0");
}catch (ReflectiveOperationException e) {
throw new IllegalArgumentException("Can't get zero value ", e);
}
}
}
您可以通过以下方式致电:
Integer myNumber = NumberUtils.getNumberOrZero(someIntegerThatCanBeNull, Integer.class);
希望这对您有所帮助。
答案 4 :(得分:1)
private boolean isNullOrZero(Integer i){
return i == null || i.intValue() == 0;
}
对于其他一些类型:
i.longValue() == 0
代表 Long
i.doubleValue() == 0
为双人
i.shortValue() == 0
为简称
i.floatValue() == 0
表示浮动
答案 5 :(得分:0)
取决于您myInteger
的实现(即myInteger
中的整数属性是框类型Integer
还是未装箱的原始int
),您可能只需要写一个有条件的。
Integer
是实际对象,这意味着它们具有null
的能力。话虽如此,他们也可以将0作为一个值。因此,在这种情况下,您必须进行两项检查。
int
是一个原语,无法保存null
的值。在这种情况下,您只需要检查int
属性是否不等于0。
答案 6 :(得分:0)
还有一种 nullsafe 方法可以做到:
Long val = null;
if( val == Long.valueOf( 0 ) ) {...}
或
if( Objects.equals( val, 0L ) ) {...}