Grails通过名字获得财产

时间:2013-05-28 12:33:03

标签: grails groovy

假设我有一个这样的课程:

class Termin {
    String someName
}

然后是一个对象

object a = new Termin();

和变量

String something = a.someName;

如果我只有变量,我怎样才能从类中获取属性someName的名称?

3 个答案:

答案 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"