重写equlas()方法的规则
来源:互联网 发布:图像数据预处理方法 编辑:程序博客网 时间:2024/05/22 14:13
equals方法实现了等价关系,一般要满足下列条件
自反性(reflexive)
对称性(symmetric)
传递性(transitive)
一致性(consistent)
对于任意的非空引用值x,x.equals(null)一定返回false.
要实现高质量equals方法,可如下做:
使用==操作符检查“实参是否为指向对象的一个引用” ,如果是,返回true;
使用instanceof操作符检查“实参是否为正确的类型”,
如果不是,返回false;
把实参转换到正确的类型
对于该类中每一个"关键(significant)"域,检查实参中的域与当前对象中对应的域值是否匹配。
如果所有的测试都成功,则返回true;
例如:
class Programer{
int number;
public Programer(int n){
number=n;
}
//必须覆盖hashCode()方法
public int hashCode(){
return number;
}
public boolean equals(Object obj){
if(this==obj)) return true;//比较的是两个对象的引用(references)是否相等
if(obj==null) return false;//检查 obj)是否为空
if(!(obj instanceof(Programer))) return false;
return (number==((Programer)obj).number);
}
}
当编写完成了equals方法之后,应该满足:它是否是对称的、传递的、一致的?
注意:
1)当你改写equals的时候,总是要改写hasCode方法
2)不要将equals声明中的Object对象替换为其它的类型
当你的equals不能正常工作时,看看是不是犯了下述例子的错误。
public boolean equals(MyClass o){
...
}
这种方式并不是覆盖object类的equals方法
- 重写equlas()方法的规则
- 方法重写的规则
- 【Stackoverflow好问题】重写(Override)equlas和hashCode方法时应考虑的问题
- Java的方法重写规则
- 重写和重载的方法的规则
- 重写父类方法的规则
- Java方法重写规则
- java方法重写规则
- Integer中equlas()方法的运用与问题总结
- java的equlas()方法与==运算符浅析
- 重写equlas,hashcode . 和比较类大小
- .htaccess -------------的重写规则,
- .htaccess的重写规则
- .htaccess的重写规则
- YII的重写规则
- Java重写的规则
- 子类重写父类的方法需要遵循以下规则:
- java面向对象基础 -- 重写父类方法的规则
- 《Exchange 2000 Server规划安装》
- 防止外部数据提交!
- “有实际开发工作经验”已经具备的能力
- MDaemon Server Pro 7.22英文正式版
- Windows日记本查看器
- 重写equlas()方法的规则
- 第一场雪
- 优化Windows xp Professional大全
- 运行Hibernate实例
- 网络工程师必懂的专业术语
- fprintf(stderr, "error para in %s(), in file %s, line %d/n", __FUNCTION__, __FILE__, __LINE__);
- 虚拟打印机
- 不要成为常用可用性疏忽的牺牲品(转贴)
- 中国软件:10个人 20年坎坷路