簡體   English   中英

如何確定嵌套 class 在 Groovy AST 轉換中是否為 static?

[英]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$AFoo$B都列出了。 ClassNode包括一個名為isStaticClass的方法,但通過 Javadoc,這僅告訴我嵌套 class 是否在 static 方法(作為本地類)中聲明,而不是 JLS 定義中的“靜態類”。 a.staticClassb.staticClass都返回false ,並且ab都返回Foo for outerClass

如何檢查Foo$AFoo$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM