プロジェクトでFindbugツールを実行したところ、次のタイプの18の問題が見つかりました。
可変オブジェクトへの参照の保存->可変オブジェクトへの参照を組み込むことにより、内部表現を公開できます
したがって、コンストラクターがObject型の配列を受け入れ、それをプライベートクラスのメンバー変数に割り当てるクラスがあります。次に例を示します。
public Class HtmlCellsProcessing extends HtmlTableProcessing
{
private Object[] htmlCells;
public HtmlCellsProcessing(Object[] htmlCells)
{
this.htmlCells = htmlCells;
}
}
警告についての詳細は次のとおりです。
このコードは、外部で変更可能なオブジェクトへの参照をオブジェクトの内部表現に格納します。信頼できないコードによってインスタンスにアクセスし、変更可能なオブジェクトへのチェックされていない変更がセキュリティやその他の重要なプロパティを危険にさらす場合は、別のことを行う必要があります。オブジェクトのコピーを保存することは、多くの状況でより良いアプローチです。
彼らが私に与えるアドバイスは非常に明白ですが、配列のサイズが非常に大きく、その値をメンバー変数配列にコピーすると、アプリケーションは2倍のメモリを消費することになります。
大量のデータがあるようなシナリオではどうすればよいですか?参照として渡す必要がありますか、それとも常にコピーする必要がありますか?