- PR -

エンティティ内のtoString()メソッド作成方針

1
投稿者投稿内容
bk
会議室デビュー日: 2005/11/18
投稿数: 11
投稿日時: 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/09/05
投稿数: 127
投稿日時: 2005-12-28 16:27
>また、違った方法でも構いませんのでより一般的な方法
>をご存知でしたらご教授願います。

リフレクションを使う方法がありますね
tama
会議室デビュー日: 2005/08/24
投稿数: 16
お住まい・勤務地: 焼売の国。ベイブリッジ見えません。
投稿日時: 2005-12-28 16:27
http://blog.sun.com/roller/page/okazaki?entry=performance_myth_string_plus_string

同じ問題を調べてたらこんなの見つけたのです。
でもあんまり長い文字列じゃなければ気にしなくていいような
問題である気もします。
_________________
道草だらけ
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-12-28 21:14
前にも別のスレッドで書いた覚えがありますが、
Jakarta Commons LangのToStringBuilder#reflectionToStringが楽です。

bk
会議室デビュー日: 2005/11/18
投稿数: 11
投稿日時: 2005-12-29 09:47
皆様

ありがとうございます。
いろいろ出てきて勉強になります。

確かにjava.langのリフレクションや
Jakarta Commons LangのToStringBuilder#reflectionToString
を使用したらかなり楽になりますね。

フィールドが多い時のtoString()メソッドの実装には
かなりうんざりしていたので、こういうものがあるのがわかって
うれしいです。

ただ、どのサイトにも書いてありますが、やはりリフレクションは
パフォーマンスがあまり良くないみたいですね。

仕組上仕方ないとは思うのですが…

やはり実装のし易さとパフォーマンスはトレードオフの関係なのでしょうね。

以下私が考えた結果をまとめます。

・toString()メソッドは主にデバッグ時、テスト時に使用するので
パフォーマンスはそれほど良くなくてよい。

・toString()メソッドにフィールドを全て書いていたらフィールドが増えた
際に変更し忘れが発生する。

上記のことからリフレクション(それも信頼性の高いJakarta Commons LangのToStringBuilde)
を使用することとします。

他にもご意見があればお願いします。
1

スキルアップ/キャリアアップ(JOB@IT)