问答详情
源自:9-9 Java 中的 Object 类 Ⅱ

关于equals( )方法重写的疑问?

重写equals( )方法时,

if (getClass() != obj.getClass())

return false;

执行完后,已经保证了原有对象和传入对象obj的类型相同,

为什么后面仍要执行

Dog other = (Dog) obj;

将传入对象obj转化为原有对象的Dog类型?

不可以这样写吗?如下:

@Override

public boolean equals(Object obj) {

if (this == obj)

return true;

if (obj == null)

return false;

if (getClass() != obj.getClass())

return false;

if (age != obj.age)

return false;

return true;

}


提问者:幕布斯9297580 2018-08-30 14:10

个回答

  • 小小龍
    2018-08-30 17:57:18
    已采纳

    Object类是所有类的父类,跟Dog类不是同一类型的。需要向下转型成Dog类,这样才能比较。