关于java中重写.equals()方法的问题

 if (getClass() != o.getClass()) {
            return false;
 }
       

关于if判断中的条件,等号后是o对象调用Object类中getClass()方法,而前者,是谁对Object类中的getClass()方法进行调用呢?这里为什么不需要写this.getClass()呢?

阅读 2.2k
2 个回答

是当前对象的 getClass()方法。
在当前对象内使用当前对象的方法或者属性可以忽略 this,除非有参数名重复,才需要特别指定 this

class Demo {
    private String id;
    private String name;
    
    public Demo(String id, String name){
       this.id = id; // 参数与字段名重复,所以需要指定 this
       this.name = name;
    }
    
    public Demo(String username) {
       name = username; // 这里的name 就是当前对象的name
       id = getClass().toString(); //  这里的 getClass() 也是当前对象的getClass() 方法
    }   
}

每次调用成员方法的时候都会隐式传入this对象,编译器会去给getClass() 加上this

推荐问题