假设我有这样的课程:
class Termin {
String someName
}
然后是一个对象
object a = new Termin();
和一个变量
String something = a.someName;
如果我只有变量 something,如何从类中获取属性 someName 的名称?
我认为最简单的方法应该是:
a."${something}"
Termin
除非您按照@Igor Artamonov 的回答检查对象中的每个属性值,否则您不能这样做。您分配给的值String something
不会产生类似于对该属性所属的原始对象的引用。
您可以尝试MetaProperty
明确地使用,但它会变得笨拙:
class Termin {
String name
}
t = new Termin(name: "john doe")
def something = t.metaClass.properties.find { it.name == "name" }
assert something.getProperty(t) == "john doe"
assert something.field.name == "name"
尝试:
String something = ...
String propertyName = a.properties.entrySet().find {
return it.value == something
}?.key