Groovy:向类中动态添加属性
发布时间:2020-12-14 16:45:59 所属栏目:大数据 来源:网络整理
导读:Groovy:向类中动态添加属性 概述 使用Groovy中类的时候,虽然开始的时候会设定一些属性,但是运行的时候想在不修改源码的情况下,支持新的属性,可能就要借助与Groovy提供的动态编程的力量了。 调用类的属性的时候,如果属性不存在会调用类的 def propertyM
Groovy:向类中动态添加属性概述使用Groovy中类的时候,虽然开始的时候会设定一些属性,但是运行的时候想在不修改源码的情况下,支持新的属性,可能就要借助与Groovy提供的动态编程的力量了。 调用类的属性的时候,如果属性不存在会调用类的 def propertyMissing(String name,value);
或者 def propertyMissing(String name);
如果是setter形式的调用属性那么是调用前者,getter是调用后者。如果是处理不存在的方式是: def methodMissing(String name,args);
这里就不再赘述。 Adding properties to domain classes on the fly using groovy propertyMissing feature这篇文章对于属性的动态添加处理有了相对详细的叙述,但是给出的代码在调试的时候,没有通过,因此写了自己的版本。 实现首先实现一个支持属性动态添加的基类 class DynamicEntity { def dynamicProperties = [:] //setter def propertyMissing(String name,value) { dynamicProperties.put(name,value) } //getter def propertyMissing(String name) { dynamicProperties.get(name) } }
然后让自己定义的类继承这个基类即可。 class VisualTreeNode extends DynamicEntity{
def String element
def VisualTreeNode left
def VisualTreeNode right
}
最后,在使用的时候就可以放心地使用了。当然这种情况下,可能会出现属性积压的情况,后面会添加处理属性的方法,包括去除不必要的属性,限定支持的属性名。 说明:如果对于不存在的属性先调用getter方法,那么返回的值就是null。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |