为了账号安全,请及时绑定邮箱和手机立即绑定

eclipse生成的equals方法中Dog other = (Dog)obj疑问;

既然类对象都一样了,也就是数据类型都一样,为什么还要做这个强制转换?不做转换难道比较不了这两个类的对象的属性值?

正在回答

2 回答

不做转换当然比较不了,虽然前面比较了类型,所以只有类型相同才会走到Dog other = (Dog) obj;这一行,但是你如果不写这一行程序就不会知道obj其实也是Dog,就像我们知道如果能看到太阳在天上就一定是白天,但是如果你只是告诉程序太阳在天上,它并不能判断出是白天,它只会严格按照我们指定的程序执行,但是并不具有最基本的逻辑推理能力。

3 回复 有任何疑惑可以回复我~
#1

GrimNew 提问者

类型相同为什么还会走Dog other = (Dog) obj;,属性名称的数据类型都相同了,那直接去判断age!=obj.age两个属性值是否相等不就好了吗,何必把obj的属性强制转换成Dog再去判断呢?简单说,删去Dog other = (Dog) obj;,if括号中改为age!=obj.age和例程一样不?
2017-02-12 回复 有任何疑惑可以回复我~
#2

GrimNew 提问者

问题已经解决。上面是我本来想问的,编辑了一会儿,自己又去探索了。我的这个问题出在重写equals上,重写的equals参数是Object obj,注意是Object,不是Dog,传递参数时没有指明类型,所以强制类型转换才能比较,我在IDEA自己写着试了一下,把参数改成Dog.obj,那就可以直接去比较了。省去了自己改代码的麻烦,IDE太强大。我把自己的问题写出来方便大家,也算是学习成果了。
2017-02-12 回复 有任何疑惑可以回复我~
#3

GrimNew 提问者

3Q
2017-02-12 回复 有任何疑惑可以回复我~
#4

ziom 回复 GrimNew 提问者

嗯,谢谢采纳
2017-02-12 回复 有任何疑惑可以回复我~
#5

Justeasy 回复 GrimNew 提问者

原来如此,楼主是你自己解决了这个问题
2017-07-20 回复 有任何疑惑可以回复我~
#6

Justeasy 回复 GrimNew 提问者

楼主是你自己解决了这个问题
2017-07-20 回复 有任何疑惑可以回复我~
查看3条回复

同疑问,我再看看

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

eclipse生成的equals方法中Dog other = (Dog)obj疑问;

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信