- - PR -
エンティティ内のtoString()メソッド作成方針
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-12-28 16:04
以下のエンティティクラスに自身のプロパティを表示するための
toString()メソッドを作成するとします。 public class Entity(){ private String hoge; private String foo; //setter/getter省略 } この時、以下の2通りの作り方があるかと思うのですが、 どちらの方が良いのでしょうか? (A)StringBufferを使用する方法 public String toString() { StringBuffer buf = new StringBuffer(); buf.append(hoge).append(", "); buf.append(foo).append(", "); return buf.toString(); } (B)Stringを使用する方法 public String toString() { return hoge + ", " + foo; } 私は(B)を使用しているのですが、 皆さんはどちらを使用していますか? 理由も交えて教えていただけますと幸いです。 また、違った方法でも構いませんのでより一般的な方法 をご存知でしたらご教授願います。 |
|
投稿日時: 2005-12-28 16:27
>また、違った方法でも構いませんのでより一般的な方法
>をご存知でしたらご教授願います。 リフレクションを使う方法がありますね |
|
投稿日時: 2005-12-28 16:27
つ http://blog.sun.com/roller/page/okazaki?entry=performance_myth_string_plus_string
同じ問題を調べてたらこんなの見つけたのです。 でもあんまり長い文字列じゃなければ気にしなくていいような 問題である気もします。 _________________ 道草だらけ |
|
投稿日時: 2005-12-28 21:14
前にも別のスレッドで書いた覚えがありますが、
Jakarta Commons LangのToStringBuilder#reflectionToStringが楽です。 |
|
投稿日時: 2005-12-29 09:47
皆様
ありがとうございます。 いろいろ出てきて勉強になります。 確かにjava.langのリフレクションや Jakarta Commons LangのToStringBuilder#reflectionToString を使用したらかなり楽になりますね。 フィールドが多い時のtoString()メソッドの実装には かなりうんざりしていたので、こういうものがあるのがわかって うれしいです。 ただ、どのサイトにも書いてありますが、やはりリフレクションは パフォーマンスがあまり良くないみたいですね。 仕組上仕方ないとは思うのですが… やはり実装のし易さとパフォーマンスはトレードオフの関係なのでしょうね。 以下私が考えた結果をまとめます。 ・toString()メソッドは主にデバッグ時、テスト時に使用するので パフォーマンスはそれほど良くなくてよい。 ・toString()メソッドにフィールドを全て書いていたらフィールドが増えた 際に変更し忘れが発生する。 上記のことからリフレクション(それも信頼性の高いJakarta Commons LangのToStringBuilde) を使用することとします。 他にもご意見があればお願いします。 |
1