加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

Groovy – 在对象实例化期间忽略地图中的额外属性

发布时间:2020-12-14 16:35:43 所属栏目:大数据 来源:网络整理
导读:在对象实例化过程中,有没有办法使groovy忽略地图中的额外属性?例: class Banana{ String name}def params = [name:'someGuy',age:13]new Banana(params) 在这个例子中,groovy抛出一个没有这样的属性:age exception(显然是因为在Banana类中没有定义年龄,而
在对象实例化过程中,有没有办法使groovy忽略地图中的额外属性?例:

class Banana{
    String name
}
def params = [name:'someGuy',age:13]
new Banana(params)

在这个例子中,groovy抛出一个没有这样的属性:age exception(显然是因为在Banana类中没有定义年龄,而不用手动将映射中所需的属性映射到Banana类的构造函数,是否有一种方法告诉香蕉忽略额外的属性?

我注意到Grails域类不会受到这个问题的困扰,我也想在这里做同样的行为!

感谢您的帮助和建议!

解决方法

不幸的是,没有内在的方法来做到这一点. Grails通过为域对象生成自己的构造函数来实现.一个简单的解决方法是使用这样的构造函数:

Banana(Map map) {
    metaClass.setProperties(this,map.findAll { key,value -> this.hasProperty(key) })
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读