equals方法重写的一个问题

[复制链接]
查看11 | 回复3 | 2010-7-22 11:42:47 | 显示全部楼层 |阅读模式
class Person{
private String name;
public String getName();
public boolean equals(Object o){
//1o==null
if(o==null)
return false;
//2o==this
if(o==this)
return ture;
//3 判断o和this是否精确属于同一类
if(o.getClass()!=this.getClass())
return false;
//保证强制类型转换的正确性。
//4自定义比较规则(重写equals()方法)

Persion p=(Person)o;
return p.getName().euqals(name);

}
}
这段代码中,第3部分,有一个类型判断,这里问什么要进行类型判断呢,有没有高手可以解答一下。

回复

使用道具 举报

千问 | 2010-7-22 11:42:47 | 显示全部楼层
这个类型判断不太科学。。最好是用instanceof关键字。。if(o instanceof Person)即判断o是否是Person类型..之所以要判断这个..有两个原因..一..如果不是Person类型..肯定就不相等了..直接返回false..节省时间..资源..二..避免下一步报错..如果不是的话..强制转换就会报异常..这样写的话..程序很健壮..不会报错..
回复

使用道具 举报

千问 | 2010-7-22 11:42:47 | 显示全部楼层
判断一下类型先,不然你第4步强制转化是会报错的
回复

使用道具 举报

千问 | 2010-7-22 11:42:47 | 显示全部楼层
你需要补充点问题。你这个类型判断。是判断什么。是属性 还是方法。还是什么?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行