如何在 Groovy 中获取 class 字段标识符作为字符串?
How to get class field identifier as String in Groovy?
假设简单 Groovy class (POGO):
class Person { String name; int age }
如何在运行时获取选择的标识符?换句话说,程序员在源代码中使用的标识符名称(如 "name" 和 "age")- 不是此标识符变量中保存的值(如 "James" 和“32”)。
有了结果解决方案(如果有的话)就可以写出这样的东西(语法错误的伪代码):
assert new Person().name.identifierAsString == 'name'
assert new Person().age.identifierAsString == 'age'
请注意,我不是要获取 字段名称列表 (如 Person.declaredFields
),而是获取 的编译时安全方法字段标识符为 String.
我不确定你想要完成什么,但你可以像这样获得所有声明的字段名称:
assert ['name', 'age'] == Person.declaredFields.findAll { !it.synthetic }.collect { it.name }
否则 declaredFields
是您可以使用的 java.lang.reflect.Field
列表。
我wrote a lib前段时间写了类型检查查询。这可能是您想要的:
import org.latitude.Latitude
Customer customer = Latitude.forClass Customer
assert customer instanceof Customer
assert customer.name == "name"
假设简单 Groovy class (POGO):
class Person { String name; int age }
如何在运行时获取选择的标识符?换句话说,程序员在源代码中使用的标识符名称(如 "name" 和 "age")- 不是此标识符变量中保存的值(如 "James" 和“32”)。
有了结果解决方案(如果有的话)就可以写出这样的东西(语法错误的伪代码):
assert new Person().name.identifierAsString == 'name'
assert new Person().age.identifierAsString == 'age'
请注意,我不是要获取 字段名称列表 (如 Person.declaredFields
),而是获取 的编译时安全方法字段标识符为 String.
我不确定你想要完成什么,但你可以像这样获得所有声明的字段名称:
assert ['name', 'age'] == Person.declaredFields.findAll { !it.synthetic }.collect { it.name }
否则 declaredFields
是您可以使用的 java.lang.reflect.Field
列表。
我wrote a lib前段时间写了类型检查查询。这可能是您想要的:
import org.latitude.Latitude
Customer customer = Latitude.forClass Customer
assert customer instanceof Customer
assert customer.name == "name"