检查该数组是否为空,但不是null

时间:2016-02-16 12:51:36

标签: java arrays

我有一个对象数组(Object[] array),我想检查它是否为空,但如果它在NPE或任何其他异常时为null,则会快速失败。

我知道我可以进行以下检查

array.length == 0

但是,例如如果String或收藏品不建议使用,IntelliJ甚至会对此进行检查:

  

报告任何.size().length()与0字面的比较,可以通过调用.isEmpty()来替换。

数组的.isEmpty()是否有替换?

ArrayUtils.html#isEmpty(java.lang.Object[]),但它也会检查null,而我却想避免这种情况。

2 个答案:

答案 0 :(得分:4)

因为.size()是方法,所以它的实现是隐藏的。而且您无法确定此方法是否已优化(有一个可能性,例如,每次调用.size()方法时,某些集合都会枚举项目)。这就是为什么计算集合.size()可能是昂贵的。同时,.isEmpty()可以检查集合中是否至少有一个项目,并返回结果。

但是.length只是一个领域。它什么都不做,只返回一个值。没有计算。该字段仅存储具有固定大小的数组长度。

我认为.size().length完全不同,在这种情况下,它们无法与集合和数组进行比较。

答案 1 :(得分:0)

最简单的方法就是自己编写这样的方法。这将是相当微不足道的。类似于以下内容

public boolean isArrayEmpty(Object[] array) {
    if (array == null) {
        //Throw nullpointer exception
        //An easy of method of doing this would be accessing any array field (for example: array.length)
    }
    return (ArrayUtils.isEmpty(array));
}

话虽如此,array.length == 0有害的原因却很少。它是最简单,最干净的方法,可以完全满足您的需求。最有可能的部分原因是ArrayUtils.isEmpty允许轻松测试数组是否为空 null,这是一个相对常见的需求,但你不想做这一点。