在AST转换中,我尝试检测类Foo
是否有嵌套类,如果有,它们是静态类还是内部类:
@MyTransform
class Foo {
static class A {}
class B {}
}
当我检查fooCn.innerClasses
时,Foo$A
和Foo$B
都列出了。ClassNode
包括一个名为isStaticClass
的方法,但由Javadoc,它只告诉我嵌套类是否在静态方法中声明*(作为本地类),而不是JLS定义的“静态类”。a.staticClass
和b.staticClass
都返回false
,a
和b
都为outerClass
返回Foo
。
如何检查Foo$A
和Foo$B
的类节点并确定Foo$A
是静态嵌套类?
1条答案
按热度按时间des4xlb01#
表示每个类的
ClassNode
具有包含类的修饰符标志的属性modifiers
;位4(值8)被定义为STATIC
修饰符。实用程序方法java.lang.reflect.Modifier.isStatic(classNode.modifiers)
将指示类是静态的、嵌套的还是内部的。