Re: InterType
まさたかさんへのレス.
@PageModel public interface IndexModel { @Property String getUserId(); }
これもおもしろそうですね.
なぜ今回のInterTypeのようなフィールドを書いてアノテーションする方法を避けたかというと、Javaインターフェイスではフィールドが書けないためです。
ふむ.
正確にはインタフェースにもフィールドを書くことはできます.
ただし,全ては public static final
の,いわゆる定数になるわけですが.
なので,それをインスタンスフィールドとして直接使うわけにはいきません.
でもでも,結局はそのインタフェースを実装したクラスを生成するのなら,そこで同名の非 static final なフィールドを定義しちゃえばいいような.
例えば
@PageModel public interface IndexModel { @Property String userId = null; }
って書いたら
public class IndexModel$ implements IndexModel { private String userId = null; public String getUserId() { return userId; } public void setUserId(String userId) { this.userId = userId; }
ってことにしちゃう.
実装クラスに同名のフィールドがあってもこのケースでは実用上問題なしです.
あるいは,生成されるフィールドはどうせ直接使わないのだから,prefix / suffix を付けても構いませんよね.
インタフェースに記述するのが定数なので,初期値を明示的に書かなきゃいけないのがちょっと面倒かな?
まぁ,こんなアイディアもあるということで.