Groovy 1.8中有很多新的字节码生成注释。 其中一个是@EqualsAndHashCode
注释。 使用此注释,为类生成equals()
和hashCode()
方法。 hashCode()
方法是使用Groovyorg.codehaus.groovy.util.HashCodeHelper
实现的(遵循书中的算法 Effective Java )。 equals()
方法查看类的所有单个属性,以查看两个对象是否相同。
我们甚至可以包括类字段而不是仅包含用于生成两种方法的属性。 在分配注释时,我们只需要使用includeFields=true
。
要包含对超类的调用,我们使用注释属性callSuper
并赋值'true。 最后,我们还可以从哈希码计算或相等比较中排除属性或字段。 我们使用注释属性
excludes`,我们可以分配属性和字段名称列表。
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 删除。