我有4个班级
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报告第一类的问题只有“数据直接存储”
但是声纳没有在第二堂课报告同样的问题。我想知道为什么?
答案 0 :(得分:3)
因为任何人都可以修改外部阵列。
使用列表,您可以选择传入一个不可修改的列表来解决该问题,同时如果您愿意,仍然可以轻松进行外部访问 - 。
因此第二种情况确实存在问题,但它不太常见,可以更容易避免。
使用原始数组还有其他问题。如果阵列需要增长,并且您还需要外部访问,那么您就不再拥有它了 - 它们指向的是旧数组,而不是新的扩展数组。使用列表,这些都是封装的。