前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Groovy 使用EqualsAndHashCode注解生成equals和hashcode方法

Groovy 使用EqualsAndHashCode注解生成equals和hashcode方法

原创
作者头像
白石
修改2019-09-09 14:41:04
1.8K0
修改2019-09-09 14:41:04
举报
文章被收录于专栏:白石白石

Groovy 1.8中有很多新的字节码生成注释。 其中一个是@EqualsAndHashCode注释。 使用此注释,为类生成equals()hashCode()方法。 hashCode()方法是使用Groovyorg.codehaus.groovy.util.HashCodeHelper实现的(遵循书中的算法 Effective Java )。 equals()方法查看类的所有单个属性,以查看两个对象是否相同。

我们甚至可以包括类字段而不是仅包含用于生成两种方法的属性。 在分配注释时,我们只需要使用includeFields=true

要包含对超类的调用,我们使用注释属性callSuper并赋值'true。 最后,我们还可以从哈希码计算或相等比较中排除属性或字段。 我们使用注释属性excludes`,我们可以分配属性和字段名称列表。

代码语言:txt
复制
import groovy.transform.EqualsAndHashCode

@EqualsAndHashCode(includeFields=true)
class User {
    String name
    boolean active
    List likes
    private int age = 37
}

def user = new User(name: 'mrhaki', active: false, likes: ['Groovy', 'Java'])
def mrhaki = new User(name: 'mrhaki', likes: ['Groovy', 'Java'])
def hubert = new User(name: 'Hubert Klein Ikkink', likes: ['Groovy', 'Java'])

assert user == mrhaki
assert mrhaki != hubert

Set users = new HashSet()
users.add user
users.add mrhaki
users.add hubert
assert users.size() == 2

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档