在Java中,this.method()和method()有什么区别?

2022-08-31 21:18:34

呼叫和(包括性能差异)之间有什么区别吗?this.method()method()


答案 1

唯一重要的时间是,如果你正在使用例如OuterClass.this.method()

class OuterClass {
    void method() { }

    class InnerClass {
        void method() {
            OuterClass.this.method(); // not the same as method().
        }
    }
 }

答案 2

这些构造之间绝对没有区别,生成的字节码将完全相同,因此不会影响性能。 如果未显式定义,则在编译期间解析。this

使用显式的唯一原因是可读性 - 有些人发现它更容易阅读,因为这表明这是当前对象的实例方法。thisthis

另请注意,如果是静态的,则不鼓励使用和误导。method()this

private static void method() {
}

private void foo() {
    this.method();    //generates warning in my IDE for a reason
}

在这种情况下,它对性能也没有影响。