私は最近、次のことを考えました。オブジェクトを定義してtoStringメソッドをオーバーライドすると、プログラムの実行中に複数回呼び出される可能性があります。特定のUIコンポーネントがどのように更新されるか(更新時にJTableが各セルメンバーのtoStringメソッドを呼び出すか)、またはオブジェクトを変更する命令を踏むたびにデバッガーがtoStringを呼び出すかどうかなどはわかりません。とにかく、そうなるかどうかを考えていました。構造がIMMUTABLEの場合、遅延評価されたStringをtoString定義として定義することは有益です。
private String toString;
//.. definitions of many components, sets, lists which won't change
public String toString(){
if (toString == null) // instantiate
return toString;
}
上記は行う価値がありますか?