如何在Java中检查Integer是null还是零?

时间:2016-12-16 11:44:27

标签: java

是否有更简洁的方式来编写

Form_Load

例如,对于Strings,您可以使用StringUtils.isBlank()

7 个答案:

答案 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 ) ) {...}