令我惊讶的是!
根据groovy的文档,groovy可以使用“getProperty”方法来获取对象的属性。因此,当我想更改获取特殊对象属性的行为时,我使用类别类来重写“getProperty”方法。然而,它不起作用。最后,我发现groovy框架使用类别类中的“get”方法来获取属性,即使对象不是地图。我的问题是,这是一个错误还是像这样工作。
这是类别类。
class DynaBeanExtension {
public static void setProperty(DynaBean bean, String propertyName, def newValue) {
try {
PropertyUtilsBean pu = null;
if (bean instanceof CustomWrapDynaBean) {
pu = bean.propertyUtilsBean;
}
if (pu != null) {
pu.setProperty(bean, propertyName, newValue);
} else {
PropertyUtils.setProperty(bean, propertyName, newValue);
}
} catch (IllegalArgumentException ex) {
bean.propertyMissing(propertyName, newValue);
}
}
public static def getProperty(DynaBean bean, String propertyName) {
try {
PropertyUtilsBean pu = null;
if (bean instanceof CustomWrapDynaBean) {
pu = bean.propertyUtilsBean;
}
if (pu …Run Code Online (Sandbox Code Playgroud) groovy ×1