在equals(Object)方法实现中,能否用getClass.equals替代类对象直接比较?
问题解答
完全可以用if(!this.getClass().equals(other.getClass()))替代原代码中的if(this.getClass() != other.getClass())判断,二者在功能上完全等价。
原因很简单:JVM中每个类的Class对象是唯一的单例实例,所以==用于比较Class对象时,本质就是判断两个引用是否指向同一个实例;而Class类继承自Object,它的equals方法默认实现就是基于==的引用比较,因此两种写法的判断结果完全一致。
实际开发里两种写法都能用,不过==的写法会更简洁直观。
内容的提问来源于stack exchange,提问作者VS228
相关产品推荐
相关产品推荐

