[Seasar-user:10896] Re: [Teeda]InterTypeとInterceptorの仕様

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 10月 5日 (金) 23:00:07 JST


小林 (koichik) です.

Date:    Fri, 05 Oct 2007 21:53:50 +0900
From:    "TAKEUCHI Shinichi / 竹内 伸一" <[E-MAIL ADDRESS DELETED]>
To:       [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:10895] [Teeda]InterTypeとInterceptorの仕様

> 1)InterTypeで追加したメソッドに対してInterceptorをかけられるか?

できません.

> 2)既存のメソッドをInterTypeでOverrideすることはできるのか?

できます.

>    同じ名称とパラメータで追加しようとしたらDuplicateだというExeption
>    になったのですが、通常のクラス定義のような@Override はできない
>    ということでしょうか?

この情報だけだと詳細が分かりませんが,
1) のように Interceptor の適用される
メソッドを InterType でオーバーライド
しようとすると Duplicate になります.
そうでなければオーバーライド可能なはずです.

Interceptor はメソッドのオーバーライドで
実現していて,同じことは InterType でも
できます.
# これは 1) が不可能な理由でもあります.
実際にエンハンスされたクラスを生成する
Javassist から見れば,Interceptor と
InterType に大した違いはありません.

> Seasar.orgの全文検索もしたのですが、InterTypeはめぼしい情報が見
> つかりませんでした。

InterType はいいアイディアだ,そんな風に
思っていた時期が僕にもありました.
しかし,実際にはそれほど便利でもなかったので
あまり使われていないのだと思います.

その代替案が public フィールドです.
Teeda との組み合わせでも public フィールドの方が
ずっとオススメです.


--
<signature>
   <name>Koichi Kobayashi</name>
   <e-mail>[E-MAIL ADDRESS DELETED]</e-mail>
</signature>



Seasar-user メーリングリストの案内