猿问

关于重写equals()方法

public boolean equals(Object obj) {
  if(this==obj) return true;
  if(obj==null) return false;
  if(this.getClass()!=obj.getClass()) return false;
  Date1 other=(Date1) obj;
  if(this.month!=other.month) return false;
  if(this.day!=other.day) return false;
  if(this.year!=other.year) return false;
  return true;
  
 }

这个重写中,通过 if(this.getClass()!=obj.getClass()) return false;  不就可以判断出obj是Date1的对象了吗?为什么还需要通过tDate1 other=(Date1) obj;将obj类型转换为Date1 对象?是不是这一行多余了?

qq_不睡觉的怪叔叔_0
浏览 1215回答 1
1回答

ziom

没有多余,计算机不是人,它不具备逻辑推理能力,比如,如果太阳在头顶上,我们就可以知道现在的时辰是正午,但你如果告诉计算机太阳在头顶,它并不能由此判断出时辰,此处也是同样的道理。
随时随地看视频慕课网APP

相关分类

Java
我要回答