老师您好,问题如下
来源:2-5 使用自定义类测试我们的算法
慕容9054781
2020-07-23 13:53:53
this. getClass()==obj. getClass()和obj instanceof Student 有什么区别?
1回答
在我们的例子中,如下代码:
if(this.getClass() != student.getClass()) return false;
改成这样也是可以的:
if(!(student instanceof Student)) return false;
二者的区别在于,使用 this.getClass() == student.getClass(),需要保证两个类严格是相同的类型,才能返回 true;
但是,使用 student instanceof Student,student 不一定是 Student 类的对象,可以是 Student 的子类对象,也会返回 true。有的时候,在逻辑搭建中,我们可能希望判断对象是这样的子类关系的时候,只要某些成员变量是等的,结果也是相等的。
因为在我们这个课程的代码中,不存在这样的继承结构,所以我们使用对 getClass 的判断就好了:)
继续加油!:)
相似问题
回答 3
回答 2
回答 1
回答 1
回答 1