PMD 在 Sun Security 规则集中有一个名为 ArrayIsStoredDirectly 的规则:
接收数组的构造函数和方法应该克隆对象并存储副本。这可以防止用户未来的更改影响内部功能。
这是他们的例子:
public class Foo {
private String [] x;
public void foo (String [] param) {
// Don't do this, make a copy of the array at least
this.x=param;
}
}
我不认为我完全理解这条规则背后的原因。是因为传递的数组中的值可以在其他地方更改吗?在这方面,传递集合与传递数组之间有区别吗?