Javaメソッドアノテーションは、メソッドオーバーライドとどのように連動するのですか?
質問
親クラスである
Parent
と子クラス
Child
は、このように定義されています。
class Parent {
@MyAnnotation("hello")
void foo() {
// implementation irrelevant
}
}
class Child extends Parent {
@Override
foo() {
// implementation irrelevant
}
}
を取得すると
Method
への参照を
Child::foo
となります。
childFoo.getAnnotation(MyAnnotation.class)
私に
@MyAnnotation
? それとも
null
?
私はより一般的に、アノテーションがJavaの継承でどのように、あるいはどのように機能するかに興味があります。
どのように解決するのですか?
以下からそのままコピー http://www.eclipse.org/aspectj/doc/released/adk15notebook/annotations.html#annotation-inheritance :
アノテーションの継承
アノテーションの有無に基づく結合点のマッチングに関係するため、アノテーションの継承に関する規則を理解することが重要です。
デフォルトでは、アノテーションは継承されません。次のようなプログラムがあるとします。
@MyAnnotation
class Super {
@Oneway public void foo() {}
}
class Sub extends Super {
public void foo() {}
}
<ブロッククオート
次に
Sub
には
MyAnnotation
アノテーションを持たず、かつ
Sub.foo()
は
@Oneway
メソッドをオーバーライドしているにもかかわらず
Super.foo()
というものです。
アノテーションタイプがメタアノテーションである場合、そのメタアノテーションは
@Inherited
を持つ場合、そのタイプのアノテーションをクラスに付けると、そのアノテーションがサブクラスに継承されることになります。したがって、上記の例では、もし
MyAnnotation
型に
@Inherited
属性がある場合
Sub
を持つことになります。
MyAnnotation
アノテーションを持つことになります。
@Inherited
アノテーションは、型以外のものにアノテーションを付ける際に使用される場合は継承されません。一つ以上のインターフェースを実装している型は、それが実装しているインターフェースからアノテーションを継承することはありません。
関連
-
java send https request prompt java.security.cert.について。
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Java Mapの各エントリを効率的に反復処理するには?
-
[解決済み] Javaでメモリーリークを発生させるにはどうしたらいいですか?
-
[解決済み] JavaでStringをintに変換するにはどうしたらいいですか?
-
[解決済み] Javaで配列に特定の値が含まれているかどうかを判断するにはどうすればよいですか?
-
[解決済み] Java で、あるコンストラクタを別のコンストラクタから呼び出すにはどうすればよいですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] Javaで文字列値からenum値を取得する方法
-
[解決済み] Javaの「for each」ループはどのように機能するのですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Eclipse問題 アクセス制限。タイプ 'SunJCE' が API でないことを解決し、/jdk ディレクトリにある /jre と jre の違いについて理解を深める。
-
NullPointerException - java.lang.
-
Javaでよくある構文エラー
-
Git Pull Failed マージされていないファイルがあるため、Pull できません。
-
無効なメソッド宣言
-
Javaがテキストファイルを読み込む
-
JDK8 の Optional.of と Optional.ofNullable メソッドの違いと使い方を説明する。
-
アクセス制限の解決方法: ---- in Java
-
switch case文のcaseの後の列挙定数は列挙型なし
-
Zipファイルの圧縮・解凍にantを使用する