![](/img/trans.png)
[英]How do I use an inner (nested) class created with a groovy AST transformation?
[英]How can I determine whether a nested class is static in a Groovy AST transformation?
在 AST 轉換中,我試圖檢測 class Foo
是否具有嵌套類,如果是,它們是 static 還是內部類:
@MyTransform
class Foo {
static class A {}
class B {}
}
當我檢查fooCn.innerClasses
時, Foo$A
和Foo$B
都列出了。 ClassNode
包括一個名為isStaticClass
的方法,但通過 Javadoc,這僅告訴我嵌套 class 是否在 static 方法(作為本地類)中聲明,而不是 JLS 定義中的“靜態類”。 a.staticClass
和b.staticClass
都返回false
,並且a
和b
都返回Foo
for outerClass
。
如何檢查Foo$A
和Foo$B
的 class 節點並確定Foo$A
是 static 嵌套 class?
代表每個 class 的ClassNode
具有一個屬性modifiers
,其中包含 class 的修飾符標志; 位 4(值 8)定義為STATIC
修飾符。 實用方法java.lang.reflect.Modifier.isStatic(classNode.modifiers)
將指示 class 是嵌套的還是內部的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.