web-dev-qa-db-ja.com

クラスアノテーションの継承

クラスにスーパークラスからアノテーションを継承させる方法はありますか?

例えば.

@ApplicationException(rollback=true)
public abstract class AbstractBeanActionException extends Exception {
    /* method body is simply calls to super() */
}

public class OrderBeanException extends AbstractBeanActionException {
    /* does this class have to be annotated as well ? */
}
18
Luke

クラスアノテーションはサブクラスに継承できません。

実行できることは、コンパイル時にアノテーションを使用するようにサブクラスを「強制」することです。

https://community.Oracle.com/docs/DOC-98356

9

アノテーションクラスを自分で定義する場合は、 @ AliExpress メタアノテーションを使用できます。

注釈タイプが自動的に継承されることを示します。継承されたメタアノテーションがアノテーションタイプ宣言に存在し、ユーザーがクラス宣言でアノテーションタイプをクエリし、クラス宣言にこのタイプのアノテーションがない場合、クラスのスーパークラスは自動的にアノテーションタイプを照会されます。

22

注釈は継承されません。ただし、アノテーション(この場合はEJB3)を使用するフレームワークは、クラス階層をナビゲートして、スーパークラスに存在するかどうかを確認することを選択できます。

このアノテーションのjavadoc を見てください。これにはinheritedプロパティがあり、このアノテーションをサブクラスにも適用する必要があるかどうかを正確に示します。

6
JB Nizet

クラスアノテーションはサブクラスに継承できませんが、非プライベートの非コンストラクターメンバーのメソッドとフィールドのアノテーションは、それらが関連付けられているメソッド/フィールドとともに継承されます。したがって、これらを使用して目的の効果を達成してみてください。

4
Péter Török

クラス自体がJava.lang.annotation。合計で注釈が付けられている注釈でマークされている場合、クラスにある注釈を要求でき、継承された注釈が結果に表示されます。

ApplicationExceptionは継承済みとしてマークされていません。まぁ。

2
pholser