我有4个类(class)
Class A {
public void setMyArray(String[] myArray) {
this.myArray = myArray;
}
}
Class B {
public void setMyArrayList(ArrayList myArray) {
this.myArray = myArray;
}
}
Class C {
public void setX(int x) {
this.myX = x;
}}
Class D {
public void setX(Integer x) {
this.x = x;
}
Sonar 在第一个类上报告了一个问题 Only "Array is directly stored"
但是 Sonar 在二等舱上没有报告同样的问题。我想知道为什么?
最佳答案
因为任何人都可以修改外部数组。
有了列表,您可以选择传入一个不可修改的列表来解决这个问题,同时如果您愿意,仍然可以方便地进行外部访问。
因此第二种情况确实存在问题,但这种情况不太常见,也更容易避免。
使用原始数组还有其他问题。如果阵列需要增长,并且您还需要外部访问,那么您就不再拥有它了——它们指向旧阵列,而不是新的扩展阵列。有了列表,一切都被封装了。
关于java - Sonar Security - Array is directly stored::为什么只在ArrayList中发布array?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12828453/