Findbugsは、次のようなゲッターとセッターを作成するたびに、コードにEI_EXPOSE_REPとEI_EXPOSE_REP2のバグを多数報告します。
public Date getDate() {
return date;
}
public void setDate(final Date date) {
this.date = date;
}
レポートの意味を理解しています。悪意のある/誤ったコードによって変更されないように、オブジェクトの内部参照を外部に公開しないでください。修正は次のようになります。
public Date getDate() {
return date == null ? null : date.clone();
}
public void setDate(Date date) {
this.date = date == null ? null : date.clone();
}
私の質問はここにはありません。このレポートが常に日付に関係していることに驚いています。なぜ他のすべての可変オブジェクトではないのですか?このレポートはすべての可変オブジェクトにも当てはまると思いますね。
この「グッドプラクティス」を、可変オブジェクトを扱うすべてのアクセサーに拡張する必要がありますか?
アドバイスをください、ありがとう