Java にはアノテーション継承のようなものがありますか? 質問する

Java にはアノテーション継承のようなものがありますか? 質問する

注釈を調べていると、注釈の中には階層構造になっているものがあることに気づきました。

私は、カードのバックグラウンドでコードを生成するために注釈を使用しています。カードの種類はさまざまです (したがって、コードと注釈も異なります) が、名前のように共通する要素がいくつかあります。

@Target(value = {ElementType.TYPE})
public @interface Move extends Page{
 String method1();
 String method2();
}

そして、これは一般的な注釈になります:

@Target(value = {ElementType.TYPE})
public @interface Page{
 String method3();
}

上記の例では、Move が method3 を継承することを期待していますが、extends はアノテーションでは無効であるという警告が表示されます。共通の基本アノテーションを拡張するアノテーションを作成しようとしましたが、うまくいきません。これは可能なのでしょうか、それとも設計上の問題なのでしょうか?

ベストアンサー1

残念ながら、いいえ。どうやら、クラスの注釈を完全に読み込まずに読み取るプログラムに関係があるようです。Java でアノテーションを拡張できないのはなぜですか?

ただし、型はスーパークラスの注釈を継承します。@Inherited

また、これらのメソッドを相互作用させる必要がない限り、クラスにアノテーションを積み重ねることもできます。

@Move
@Page
public class myAwesomeClass {}

それがあなたにとってうまくいかない理由があるのでしょうか?

おすすめ記事