gpt4 book ai didi

java - Sonar 违规 : Security - Array is stored directly

转载 作者:行者123 更新时间:2023-12-01 04:52:13 25 4
gpt4 key购买 nike

存在 Sonar 违规:

Sonar 违规:安全 - 直接存储数组

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);
}
}

但我想知道为什么?

最佳答案

它提示您存储的数组与调用者保存的数组相同。也就是说,如果调用者随后修改此数组,则存储在对象中的数组(以及对象本身)将发生更改。

解决方案是在对象传递时在对象内创建一个副本。这称为防御性复制。对集合的后续修改不会影响存储在对象内的数组。

通常在返回集合时执行此操作(例如在相应的 getMyArray() 调用中)也是一种很好的做法。否则接收者可能会执行修改并影响存储的实例。

请注意,这显然适用于所有可变集合(实际上是所有可变对象)——而不仅仅是数组。另请注意,这会对性能产生影响,需要与其他问题一起进行评估。

关于java - Sonar 违规 : Security - Array is stored directly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14777197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com