カスタム型付きコレクションのカスタム文字列表現が必要な場合、コレクションをサブクラス化して toString() をオーバーライドするのが最適なオプションであるか、カスタム型付きコレクションを取得してカスタム文字列を返すユーティリティ メソッドを作成するだけですか? 別のオプションはありますか?
2 に答える
2
私はユーティリティメソッドを作成する傾向があります。いくつかの理由:
- 論理的には、カスタム文字列表現は、元のクラスの上に重ねるものであり、元のクラスの一部ではありません。したがって、元のクラスの定義には属しません。
- 1 つのメソッドをオーバーライドするためだけにサブクラスを作成するのは、おそらくやり過ぎです。
- カスタム サブクラスを作成すると、別の理由で元のクラスをオーバーライドするオブジェクトを操作できなくなります。このような目的で継承を使用すると、継承階層がすぐに管理不能になる可能性があります。常に継承より合成を優先してください!
- 何らかの理由でオリジナルを使い続けたいと思うかもしれません: おそらく両方の文字列表現が必要であるか、オリジナルの動作
toString()
に依存する他のライブラリが必要です。toString()
その場合、それをオーバーライドすると問題が発生します.....
「ユーティリティメソッド」オプション内で、別の選択肢があります。
- 単純な静的ユーティリティ メソッドを作成します。シンプルで迅速、これはおそらく最初の選択肢です。
- のようなメソッドで「Formatter」オブジェクトを作成します
formatter.formatAsString(targetObject)
。これは、フォーマッタに保存できる書式設定オプションがある場合に役立ちます。
于 2013-03-27T04:44:00.667 に答える
0
Java オブジェクトのhttp://docs.oracle.com/javase/1.5.0/docs/api/java/lang/Object.html
toString
メソッドは、オブジェクトの文字列表現を提供することを目的としています。toString
したがって、サウンドを論理的にオーバーライドします。
于 2013-03-27T03:35:07.113 に答える