0

カスタム型付きコレクションのカスタム文字列表現が必要な場合、コレクションをサブクラス化して toString() をオーバーライドするのが最適なオプションであるか、カスタム型付きコレクションを取得してカスタム文字列を返すユーティリティ メソッドを作成するだけですか? 別のオプションはありますか?

4

2 に答える 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 に答える