0

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

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

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

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

MyClass.class

此调用最终在 getProperty 方法中查找名为“class”的属性,但是,没有名为“class”的实际属性,因此我们得到了 MissingFieldException。

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

4

2 回答 2

3

如果不需要,最好不要有 getProperty 方法。如果您需要一个,并且想使用标准的 Groovy 逻辑,那么您可以使用return getMetaClass().getProperty(this, property),如GroovyObjectSupport. 这将涵盖的不仅仅是领域。

于 2015-02-19T13:12:02.460 回答
2

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

于 2015-02-19T06:33:37.153 回答