我们可以按顺序获取Groovy类的声明属性吗?

Đin*_*hâu 2 groovy properties


我创建了一个带有一些属性的普通Groovy类(即Person类).现在我想得到那些声明的属性(我已经在我的课程中定义)和他们的顺序,但我不知道该怎么做.
我曾尝试使用Person.metaClass.getProperties(),但它不仅检索声明的属性,还检索内置的Groovy属性.
你可以帮我解决这个问题:在宣布时按顺序获取申报的房产.
非常感谢!

Gro*_*eek 8

我看不到用例,但编译器可以在创建字节码时重新排序所有字段声明.我很确定排序不是对字段的约束,尽管它应该主要是未修改/增强类的情况

根据JVM规范,生成的字段应在字节码中标记为SYNTHETIC(如生成的方法),因此您可以使用以下命令进行测试:

Person.getDeclaredFields().grep {  !it.synthetic }
Run Code Online (Sandbox Code Playgroud)

并过滤基类Groovy字段,如ClassInfo,metaClass和其他开头的字段 __timestamp

但我不是专家,可能还有另一种我没想到的方式