【发布时间】:2012-07-19 19:47:23
【问题描述】:
存在声纳违规:
声纳违规:安全 - 阵列直接存储
public void setMyArray(String[] myArray) {
this.myArray = myArray;
}
解决方案:
public void setMyArray(String[] newMyArray) {
if(newMyArray == null) {
this.myArray = new String[0];
} else {
this.myArray = Arrays.copyOf(newMyArray, newMyArray.length);
}
}
但我想知道为什么?
【问题讨论】:
-
嗯...实际上,该解决方案对我不起作用。尽管制作了副本,Sonar 仍然拿起它并抱怨它。
-
@ndtreviv 你是怎么解决的?
-
@ndtreviv:我也遇到了这个问题,如果提供给方法的局部变量的名称与您存储的实例变量相同,则此错误不会消失。确保它们不同,并且上述解决方案应该有效。我通过以下link 发现了这一点
-
Java 绝对应该发明
const以避免复制受此 d*** 规则强制的 const 数据。