我试图在一个简单的虚拟类上使用方法getFields()
,如下所示:
class C{
public int a
int b
String s
float f
static int x
}
我写了
def c = new C()
println c.class.getFields()
这是我得到的输出:
[public int C.a, public static transient boolean C.__$stMC]
有人可以解释为什么只有a
出现在列表中?
什么是另一个实体C.__$stMC
?
我在网上搜索,似乎stMC代表staticMetaClass。请澄清。感谢
答案 0 :(得分:0)
因为根据文档,getFields()仅返回公共字段:
https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getFields()
使用getDeclaredFields()或使用Groovy元编程属性,即:
def c = new C()
println c.class.getDeclaredFields().toString()
println c.getProperties().toString()