我有一个生成PMD违规ArrayIsStoredDirectly的方法:
public void setFoo(Object[] foo) {
this.foo = foo;
}
这是可以理解的 - 我需要克隆数组。所以我把它换成了:
public void setFoo(Object[] foo) {
if (foo == null) {
this.foo = null;
} else {
this.foo = new Object[foo.length];
System.arraycopy(foo, 0, this.foo, 0, foo.length);
}
}
但是,我仍然违反了ArrayIsStoredDirectly!
我真的不确定为什么会这样。也许ArrayIsStoredDirectly课程中的某些内容仍然被错误地选中了?
我知道我可以压制警告,但这似乎不是一个特殊情况。修复此违规行为的正确方法是什么?