劉Silong:
こんにちは、私はのコメントの意味が何であるかをお尋ねしたいgetEnclosingElement()
のメソッドElement
インタフェースは、私はかなり理解していません。javadocは、次のように:
大まかに囲まれて、話して、この要素がある内、最も内側の要素を返します。
この要素は、その宣言字句他の要素が返されることが、別の要素の宣言内直ちに囲まれているものである場合。
これがある場合は、トップレベルのタイプ、そのパッケージが返されます。
これがあれば、パッケージ、nullが返されます。
- これがあればtypeパラメータ、型パラメータの一般的な要素が返されます。
- これがある場合メソッドまたはコンストラクタパラメータ、パラメータを宣言し、実行可能要素が返されます。
注釈等のクラス、変数(グローバルまたはローカル)、メソッド、上で使用することができますが、私は、注釈や要素サブクラスとの対応を知りません。おかげで!!!
なスロー:
ANは、Element
Javaの13のように表すことができます。
- モジュール宣言 -
ModuleElement
- パッケージ宣言 -
PackageElement
- インタフェース、クラス、列挙、または注釈タイプ -
TypeElement
- コンストラクタ、メソッド、または初期化子 -
ExecutableElement
- フィールド、enum定数、メソッドまたはコンストラクタのパラメータ、ローカル変数、リソース変数、または例外パラメータ -
VariableElement
- typeパラメータ -
TypeParameterElement
これらの各要素は注釈存在を持つことができます。例えば:
module-info.java:
@Foobar
module example {
exports com.example;
}
package-info.java:
@Foobaz
package com.example;
Foo.java:
package com.example;
@Baz
public class Foo<@Qux T> {
private final T bar;
public Foo(T bar) {
this.bar = bar;
}
@Override
public String toString() {
return "Foo{bar= " + bar + "}";
}
}
- モジュール
example
なり、ModuleElement
有する@Foobar
注釈存在します。 - パッケージ
com.example
になり、PackageElement
持ってい@Foobaz
注釈存在を。 - クラス
Foo
になり、TypeElement
持ってい@Baz
注釈存在を。 - typeパラメータ
T
になり、TypeParameterElement
持ってい@Qux
注釈存在を。 - フィールド
bar
だろう、VariableElement
、何の注釈の存在を持っていません。 - コンストラクタ
#Foo(T)
だろう、ExecutableElement
、何の注釈の存在を持っていません。 - コンストラクタのパラメータ
bar
となり、VariableElement
、何の注釈の存在を持っていません。 - 方法
#toString()
なり、ExectuableElement
有する@Override
注釈存在します。
あなたはの方法を経由してこれらの要素の注釈が存在得ることができるAnnotatedConstruct
インターフェース、Element
拡張します。
メソッドのElement#getEnclosingElement()
戻りは、当然、Element
これは現在を囲むElement
任意の場合は、。あなたが上でそのメソッドを呼び出すようにしたのであればExecutableElement
メソッドを表す#toString()
、あなたが取得したいTypeElement
クラスを表しますFoo
。