Я пытался использовать метод 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. Просьба уточнить. Благодаря
Но в Groovy все поля являются общедоступными по умолчанию. Итак, 'getFields()' должен включать их тоже, не так ли? Также есть идеи о $ stMC? Что это означает? –
Все поля имеют модификаторы общего доступа. Когда вы меняете значение с помощью obj.prop = "x", под капотом он фактически вызывает метод. Под скомпилированным полем Java не является общедоступным. –