Groovy - 实现getProperty方法的正确方法

时间:2015-02-19 00:23:28

标签: groovy properties getter getproperty

每当检索到属性值时,我都需要运行一些代码,因此在我的类中定义getProperty方法自然是有意义的。只要检索到属性值,就会自动调用此方法。这大致是我班上的内容:

class MyClass
{
  def getProperty(String name)
  {
   // Run some code ...

    return this.@"${name}"
  }
}

当有人试图在某处进行以下调用时,会出现上述方法的问题:

MyClass.class

此调用最终在getProperty方法中查找名为" class"的属性,但是,没有名为" class"的实际属性。所以我们得到一个MissingFieldException。

每当检索到属性值时,实现运行代码的正确方法是什么,并处理这些类型的情况。

2 个答案:

答案 0 :(得分:3)

如果不需要,最好没有getProperty方法。如果您需要一个并且希望使用标准Groovy逻辑,则可以使用return getMetaClass().getProperty(this, property),如GroovyObjectSupport中所示。这将涵盖的不仅仅是字段。

答案 1 :(得分:2)

这似乎是这种方法的常见问题。地图有同样的问题。 groovy的开发人员通过说你需要直接使用getClass()来解决Map的问题。