下面是一个根据业务键实现equals()与hashCode()的例子。实际中需要根据实际的需求,决定如何利用相关的业务键来组合以重写这两个方法。
public class Cat
{
private String name;
private String birthday;
public Cat()
{
}
public void setName(String name)
{
this.name = name;
}
public String getName()
{
return name;
}
public void setBirthday(String birthday)
{
this.birthday = birthday;
}
public String getBirthday()
{
return birthday;
}
//重写equals方法
public boolean equals(Object other)
{
if(this == other)
{
//如果引用地址相同,即引用的是同一个对象,就返回true
return true;
}
//如果other不是Cat类的实例,返回false
if(!(other instanceOf Cat))
{
return false;
}
final Cat cat = (Cat)other;
//name值不同,返回false
if(!getName().equals(cat.getName())
return false;
//birthday值不同,返回false
if(!getBirthday().equals(cat.getBirthday()))
return false;
return true;
}
//重写hashCode()方法
public int hashCode()
{
int result = getName().hashCode();
result = 29 * result + getBirthday().hashCode();
return result;
}
}
重写父类方法的原则:可以重写方法的实现内容,成员的存取权限(只能扩大,不能缩小),或是成员的返回值类型(但此时子类的返回值类型必须是父类返回值类型的子类型)。
分享到:
相关推荐
1.概述 2.为什么重写equels方法要重写hashcode方法 3.例子
要注意的是List,Set,Queue继承了Collection接口,...这里想用一个简单的例子展示一下他们的使用,内容包括:List、Map、Set、Queue,Collections、Comparable与Comparator,排序、搜索,内部类,泛型、重写equals、hashCode
java 序列化和重写 hashCode 以及 equals 方法的例子
元素允许你映射一个组件类作为一个Map的key,前提是你必须正确的在这个类中重写了hashCode() 和 equals()方法。 8.4. 组件作为联合标识符(Components as composite identifiers) 你可以使用一个组件作为一个实体类...
14.2 重写equals与hashCode方法 273 14.2.1 重写equals方法 273 14.2.2 重写hashCode方法 275 14.3 集合框架的层次结构 -277 14.4 Ordered与Sorted的接口 278 14.4.1 Ordered的排序 278 14.4.2 Sorted的...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
实例014 使当前项目依赖另一个项目 21 1.3 界面设计器 22 实例015 安装界面设计器 22 实例016 设计Windows系统的运行对话框 界面 23 实例017 设计计算器程序界面 26 实例018 设计关于进销存管理系统的界面 27 第2章 ...