[Seasar-dev:221] Re: toString()を自動生成するToStringInterTypeはどうでしょうか?

KOMORI Yusuke y-komori
2006年 1月 8日 (日) 02:57:44 JST


 こもりです。

 ブログの方でもちょうど要望がでていますので、よろしくお願いします。

> ●定義例
> @ToString(VERBOSE)
> public class FooDto {
>     int  intVal;
>     Date dateVal;

 アノテーションは不要ですよね。

<component name="toStringInterType"
    class="org.seasar.framework.aop.intertype.ToStringInterType" />
<component class="FooDto">
    <interType>toStringInterType</interType>
</component>

 みたいな感じでInterType宣言すればよいと思います。
 フォーマットは、ファーストバージョンではこれでよいかと思います。

 ToStringInterTypeのプロパティでフォーマットまでカスタマイズできると柔
軟性があがるかもしれません。
 こんな感じです。

<component name="toStringInterType"
    class="org.seasar.framework.aop.intertype.ToStringInterType">
    <property name="prefix">"["</property>
    <property name="delimiter">","</property>
    <property name="format">"${name}=${val}"</property>
    <property name="suffix">"]"</property>
</component>

 でも、introduction時にちょっと重くならないか心配ですね。

 とにかく、まずはシンプルな実装で良いかと思います。

 あと、PropertyInterType との併用が予想されるので、InterTypeChain が必
要ですね。これは私のほうで検討してみます。

On Sun, 08 Jan 2006 00:51:17 +0900, 江里口 温 <on-eri @ vega.ocn.ne.jp> wrote:

> 初めまして、エスエムジーの江里口と申します。
> 小森さん、村田さん、速川さんの後輩です。
> 
> 小森さんの発案したPropertyInterTypeって便利ですよね。
> 
> 新しいInterTypeの提案なのですが、
> 自動的に詳細なtoStringメソッドを追加してくれるToStringInterType
> を作ってはどうでしょうか?
> 
> toStringはデフォルトでは クラス名@内部アドレス の様な文字列を生成します
> が、デバッグ時にはこの情報では足りず、自分でもっと詳細な情報を出すように
> 修正することが多いです。
> 
> そこで、
> 以下の様に宣言しておくことで自動的にtoStringメソッドをオーバーライドし、
> クラス内部のフィールド一つ一つを出力するように修正してくれる様なInterType
> があれば便利だと思います。
> 
> ●定義例
> @ToString(VERBOSE)
> public class FooDto {
>     int  intVal;
>     Date dateVal;
> 
> ●生成するtoStringメソッド
> public String toString() {
>     StringBuffer buffer = new StringBuffer(20);
>     buffer.append(super.toString());
>     buffer.append(",");
>     buffer.append("intVal=");
>     buffer.append(intVal);
>     buffer.append(",");
>     buffer.append("dateVal=");
>     buffer.append(DateVal);
> }
> 
> 出力内容やフォーマットは検討の余地がありますが、どうでしょうか?
> 
> --
> 江里口 温
> _______________________________________________
> Seasar-dev mailing list
> Seasar-dev @ lists.sourceforge.jp
> http://lists.sourceforge.jp/mailman/listinfo/seasar-dev

----------------------------------------------
 小森 裕介 / Yusuke Komori

  E-Mail:y-komori @ nifty.ne.jp
     URL:http://www.littleforest.jp/




seasar-dev メーリングリストの案内