一青
2016-08-05 11:42
在重写equals的时候里面有这几行代码,
public boolean equals(Object obj) {
...
if (getClass() != obj.getClass())
return false;
HelloWorld other = (HelloWorld) obj;
...
}
这里已经用getclass判断了两个对象的类型是否一样为什么还要再强制转换一次?
你的问题逻辑有问题,if (A != B),那么你再写B = A是要赋值还是判断相等;相不相等是人为规定的一种状态,这状态是怎么样就怎么样,你没法通过比较两者改变这种状态。再有,B = A是赋值操作,B == A才是判断操作,然而 B == A只是单纯返回true 或 false,跟你一开始问的强制转换是没有关系的。计算机默认判断两个对象是否相等的方式是通过内存地址(这种默认当然也是人给计算机规定的),而重写equals方法就是改变这种计算机的默认判断方式,告诉计算,如果两个对象同属于一类,同时它们属性值相等,那么它们就是相等的。
很多人类认为理所当然的事情,你如果不明确告诉计算机它就不会知道,比如有一个未知性别的人,我们可以这样判断:如果ta不是男人,那ta就是女人(这里不考虑人妖),但如果你只告诉计算机这个人不是男人,计算机是无法判断ta是女人的,计算机只是[单纯知道了这个人不是男人],你只有继续跟计算机明确说明这个人是女人才行。
他要达到的目的就是强转,只有强转以后才可以进行后续判断。
Java入门第二季 升级版
530559 学习 · 6091 问题
相似问题