0

次のケースを検討してください

public void setRules(MyRule[] rules) {
    this.rules=rules;
}

Sonarと文句を言って言います。

配列を受け取るコンストラクターとメソッドは、オブジェクトを複製してコピーを保存する必要があります。これにより、ユーザーによる将来の変更が内部機能に影響することを防ぎます。

これは真実であり、これを設定した後に誰かが の値を変更するarrayと、その変更が内部関数に影響を与える可能性があることがわかりました。その配列の変更を複製しても効果はありません。

ここで、別のケースを考えてみましょう

public void setExecutions(List<MyRule> ruleList) {
    this.ruleList= ruleList;
}

Sonarは何の問題も言わない。ここでクローンが必要ないのはなぜですか?

4

1 に答える 1