我创建了一个带有一些属性的普通Groovy类(即Person类)。现在我想得到那些声明的属性(我已经在我的课程中定义)和他们的顺序,但我不知道该怎么做。
我试图使用Person.metaClass.getProperties(),但它不仅检索声明的属性,还检索内置的Groovy属性。
能否帮我解决这个问题:在申报时,只需按订单申报
非常感谢!
答案 0 :(得分:8)
我看不到用例,但编译器可以在创建字节码时重新排序所有字段声明。我非常确定排序不是对字段的约束,尽管它主要应该是未修改/增强类
的情况根据JVM规范,生成的字段应在字节码中标记为SYNTHETIC(如生成的方法),因此您可以使用以下命令进行测试:
Person.getDeclaredFields().grep { !it.synthetic }
并过滤基类Groovy字段,如ClassInfo,metaClass和其他以__timestamp
开头的
但我不是专家,可能还有另一种我没想到的方式
答案 1 :(得分:2)
mailing list back in February of this year
对此有疑问答案是,不。没有办法按照它们在类中声明的顺序获取属性而不做一些额外的工作。
@Order(1) String prop
除此之外,你可能想要重新思考: - (