我收到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();
}
答案 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错误。