假设我有一个这样的课程:
class Termin {
String someName
}
然后是一个对象
object a = new Termin();
和变量
String something = a.someName;
如果我只有变量,我怎样才能从类中获取属性someName的名称?
答案 0 :(得分:3)
我认为最简单的方法应该是:
a."${something}"
答案 1 :(得分:1)
尝试:
String something = ...
String propertyName = a.properties.entrySet().find {
return it.value == something
}?.key
答案 2 :(得分:1)
除非根据@Igor Artamonov答案检查Termin
对象中的每个属性值,否则不能这样做。您分配给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"