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;
}
}
このルールの背後にある理由を完全に理解しているとは思いません。渡された配列の値を別の場所で変更できるからですか? これに関して、コレクションを渡すことと配列を渡すことの間に違いはありますか?