具有多个字段的Groovy类只显示一个字段 - public static transient boolean C .__ $ stMC

时间:2016-07-01 05:15:45

标签: groovy metaclass

我试图在一个简单的虚拟类上使用方法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。请澄清。感谢

1 个答案:

答案 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()