Annotation Restricted
「Annotation にも型制約を」ということで、少々考えてみました。
AspectをAnnotationでウィービング(?)するのが流行ってますが、そのノリで上位クラスに制約を掛け、これをコンパイルすればいいのではと。
ちなみに、java.lang.annotation.AnnotationFormatError をスローするのが流行らしい。
// このクラスを継承するには @Strict({ // hoge* メソッドが @Hoge を注釈に持ち @Require(target="hoge*", rule = Hoge.class), // foo* メソッドが @Foo を注釈に持たなければなりません @Require(target="foo*", rule = Foo.class) }) public class Base { // no members.. }
まぁ、aptの勉強がてら。