getA()和this.getA()之间有什么区别?

0 java

假设有一个类如下的类.

public Class SomeClass {
    private A getA() {
        ...
    }

    public void show() {
        A a = getA();    // CASE #1
        ...
    }

    public void show2() {
        A a = this.getA();    // CASE #2
        ...
    }
Run Code Online (Sandbox Code Playgroud)

他们的结果是一样的,不是吗?我的白痴同事坚持认为是对的!!(这意味着他们是不同的.)

Mic*_*rry 5

在这种情况下,它们是相同的.我主张不使用this它,因为它是隐含的,它只是在那里使代码混乱,但它是否存在没有实际区别.

虽然这没用.该this关键字有时需要,例如:

  • 当局部变量/参数隐藏一个字段时,它用于区分它们
  • 从内部实例引用类的外部实例时(使用Outer.this)
  • 当使用显式泛型类型来调用方法而不仅仅是被动类型时(你不能只是这样做<String, String>stringMethod(),它必须是this.<String, String>stringMethod().

这绝不是一个详尽的列表,只是作为一个示例来演示,虽然它在这种情况下没有区别,但在其他情况下它可以做到!