[英]Java Annotation Processor getEnclosingElement() method
你好,我想問一下Element
接口中getEnclosingElement()
方法的注釋是什么意思,不太明白。 javadoc如下:
返回最里面的元素,松散地說,該元素包含在其中。
如果此元素的聲明在詞法上立即包含在另一個元素的聲明中,則返回該另一個元素。
如果這是頂級類型,則返回其包。
如果這是一個包,則返回 null。
如果這是一個類型參數,則返回該類型參數的泛型元素。
如果這是一個方法或構造函數參數,則返回聲明該參數的可執行元素。
注解可以用於類、變量(全局或局部)、方法等,但不知道注解與Element子類的對應關系。 謝謝!!!
從 Java 13 開始,一個Element
可以表示:
ModuleElement
PackageElement
TypeElement
ExecutableElement
VariableElement
TypeParameterElement
這些元素中的每一個都可以有注釋。 例如:
模塊信息.java :
@Foobar
module example {
exports com.example;
}
包信息.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
注釋。T
,這將是一個TypeParameterElement
,有一個@Qux
注釋存在。bar
將是一個VariableElement
,沒有注釋。#Foo(T)
將是一個ExecutableElement
,沒有注釋。bar
將是一個VariableElement
,沒有注釋存在。#toString()
這將是一個ExectuableElement
,具有@Override
注釋本。 您可以通過Element
擴展的AnnotatedConstruct
接口的方法獲取這些元素上的AnnotatedConstruct
。
該方法Element#getEnclosingElement()
返回時,勿庸置疑,所述Element
包圍當前Element
,如果有的話。 因此,如果您要在表示方法#toString()
的ExecutableElement
上調用該方法,那么您將獲得表示Foo
類的TypeElement
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.