老师说这个是判断两个对象类型是否相等,可是两个类型不是不一样么?老师说一样,一样的话后面怎么还要转换类型
if (getClass() != obj.getClass())
return false;
//将传入的对象强制转换为当前对象
Dog other = (Dog) obj;
if (getClass() != obj.getClass())
return false;
//将传入的对象强制转换为当前对象
Dog other = (Dog) obj;
2015-07-30
这条语句就是判断这2个对象的类的类型是否一样的。getClass()是this对象的类的类型,就是调用这个方法的对象。
obj.getClass()是参数传递过来的对象的类的类型,就是你要比较目标的类的类型。
举个例子吧:
还是Dog这个类,你重写了equals方法。重写的目的是当使用blackDog对象的时候,你发现还有一个叫whiteDog的对象,你想比较他俩是否相等。如果不重写equals方法,只能他俩的地址值相同,但实际上你想比较的是名字、性别、品种什么的是否相同。那当你使用这句boolean flag=blackDog.equals(whiteDog);的时候,"if (getClass() != obj.getClass())" 这里第一个getClass()就是blackDog调用的,obj.getClass就是 whiteDog调用的。
(Dog blackDog=new Dog();whiteDog不是你创建的,所以你不清楚他是什么类)
class Dog{
public boolean equals(object obj){
}
}
举报