GuiceのAOPを使ってメソッド呼び出しをインターセプトしています。私のクラスはインターフェースを実装しているので、Guiceが適切なメソッドを選択できるようにインターフェースメソッドにアノテートしたいと思います。またJavaクラスが実装されたインタフェースからアノテーションを継承しないのはなぜですか?
(注)このメタ注釈 のみスーパークラスから を継承するために注釈を引き起こすこと;:注釈型がInherited注釈実装するクラスでアノテートされている場合でもの継承Javaのドキュメントに記載されているように注釈を継承しません。 実装されたインターフェイスの注釈 は効果がありません。
この理由は何ですか?オブジェクトのクラスが実行時に実装するすべてのインタフェースを知ることは難しいことではないので、この決定の背後には十分な理由があるはずです。
注釈は、それらをサポートするフレームワークを持っている場合にのみ役に立ちます。この例ではBTWはgetAnnotation()がnullを返す;) –
私は人を知らない。この場合(typoがなければ)、フィールド値があいまいです。同じ値を持つ2つのインタフェースを宣言するのと同じように、コンパイラのエラーと同じです。私はこれがフィールドではないことを知っていますが、注釈の値はコンパイル時にすべて解決されますが、そうではありませんか?ここで欠けている機能は、多くの場合非常に役立ちます。ところで、古い投稿を復活させて申し訳ありません:) –
@Slanecは、Springの人がこれらの問題をどのように処理したかを見るためにSpringのソースを見ています。 [AnnotationUtils.findAnnotation(method、annotationType)](http://grepcode.com/file/repo1.maven.org/maven2/org.springframework/spring-core/3.1.1.RELEASE/org/springframework/core/)を参照してください。注釈/ AnnotationUtils.java#AnnotationUtils.findAnnotation%28java.lang.reflect.Method%2Cjava.lang.Class%29) –