每当检索到属性值时,我都需要运行一些代码,因此在我的类中定义getProperty方法自然是有意义的。只要检索到属性值,就会自动调用此方法。这大致是我班上的内容:
class MyClass
{
def getProperty(String name)
{
// Run some code ...
return this.@"${name}"
}
}
当有人试图在某处进行以下调用时,会出现上述方法的问题:
MyClass.class
此调用最终在getProperty方法中查找名为" class"的属性,但是,没有名为" class"的实际属性。所以我们得到一个MissingFieldException。
每当检索到属性值时,实现运行代码的正确方法是什么,并处理这些类型的情况。
答案 0 :(得分:3)
如果不需要,最好没有getProperty方法。如果您需要一个并且希望使用标准Groovy逻辑,则可以使用return getMetaClass().getProperty(this, property)
,如GroovyObjectSupport
中所示。这将涵盖的不仅仅是字段。
答案 1 :(得分:2)
这似乎是这种方法的常见问题。地图有同样的问题。 groovy的开发人员通过说你需要直接使用getClass()来解决Map的问题。