如何修复PMD警告:UseCollectionIsEmpty?

时间:2016-04-26 01:10:54

标签: java pmd

我收到PMD警告 - UseCollectionIsEmpty及其提供的确切消息是:

"调用size()== 0(或size()!= 0,size()> 0,size()< 1)调用isEmpty()"在最后else if声明中。

我的问题是我的声明正在检查我的ArrayList是否为空。但PMD警告告诉我将其更改为isEmpty(),这不是我需要做的。解决这个问题的工作是什么?

        if (theNeighbors.get(getDirection()) == Terrain.CROSSWALK) {
            myDirection = getDirection();
        } else if (theNeighbors.get(getDirection().left()) == Terrain.CROSSWALK) {
            myDirection = getDirection().left();
        } else if (theNeighbors.get(getDirection().right()) == Terrain.CROSSWALK) {
            myDirection = getDirection().right();
        } else if (myPossDir.size() > 0) {
            myDirection = myPossDir.get(random.nextInt(myPossDir.size()));
        } else {
            myDirection = getDirection().reverse(); 
        }

2 个答案:

答案 0 :(得分:0)

而不是

    } else if (myPossDir.size() > 0) {
        myDirection = myPossDir.get(random.nextInt(myPossDir.size()));
    } else {
        myDirection = getDirection().reverse(); 
    }

您应该使用:

    } else if (myPossDir.isEmpty()) {
        myDirection = getDirection().reverse(); 
    } else {
        myDirection = myPossDir.get(random.nextInt(myPossDir.size()));
    }

这将使上述PMD警告消失,并且更清楚地表明您的意图,您想要检查该集合是否为空。使用size()用于其他情况 - 当您不将其与零进行比较时。

编辑:更改了ifs的顺序,所以现在使用isEmpty()而不是!isEmpty()(另一个PMD警告,否定if不像没有否定的那样容易阅读<) / p>

答案 1 :(得分:0)

代替;

if ( myCollection.size() > 0)

您可以使用

if(myCollection !=null && !mycollection.isEmpty())

修复此PMD错误。