黑马程序员技术交流社区
标题:
覆盖equals方法,健壮性判断
[打印本页]
作者:
赵凯
时间:
2013-9-5 15:03
标题:
覆盖equals方法,健壮性判断
覆盖equals方法中,传进来一个person对象,为什么还要比较是不是person类型的?如果是,为什么还要进行强转成person类型的?
public boolean equals(Object obj){
if( this == obj)
return true;
if( obj instanceof Person){
Person p = (Person)obj;
return this.name.equals(p.name) && this.age == p.age;
}
return false;
}
作者:
许庭洲
时间:
2013-9-5 15:19
本帖最后由 许庭洲 于 2013-9-5 15:20 编辑
1. Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等;
2 .Object的Equals的默认实现比较的是两个对象的引用等同性;
3. Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性;
4. 在C#中,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性;
5. 每当使用引用类型的逻辑等同性的时候,就应该重写Equals方法。
作者:
赵凯
时间:
2013-9-5 15:54
许庭洲 发表于 2013-9-5 15:19
1. Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等;
2 .Object的Equals的默认实现比较 ...
没看太明白
作者:
冬爱♂小七
时间:
2013-9-5 18:11
1. Object类型有一个名为Equals的实例方法可以用来确定两个对象是否相等;
2 .Object的Equals的默认实现比较的是两个对象的引用等同性;
3. Object的派生类ValueTpye重写了Equals方法,它比较的是两个对象的逻辑等同性;
4. 在C#中,引用类型的默认Equals版本关注的是引用等同性,而值类型关注的是逻辑等同性;
5. 每当使用引用类型的逻辑等同性的时候,就应该重写Equals方法。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2