2011-01-28 180 views
0

假设有一个像下面这样的类。getA()和this.getA()之间有什么区别?

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

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

    public void show2() { 
     A a = this.getA(); // CASE #2 
     ... 
    } 

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

+0

是的,它们是一样的。 – Rekin 2011-01-28 01:37:10

回答

5

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

虽然这不是没用的。所述this关键字有时需要,例如:当一个局部变量/参数隐藏它用来区分它们

  • 当提及从内实例的类的外实例的字段

    • (使用外。本)
    • 当使用明确的泛型类型调用一个方法,而不是仅仅infered类型(你不能只是做<String, String>stringMethod(),它必须是this.<String, String>stringMethod()

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

  • 2

    你的同事毕竟不是那么多白痴,因为他们都是都是一样的。在第一种情况下,Java含蓄暗示this

    2

    我会举出我在学校时间遇到的这个指针的最好例子。

    class ThisChk 
    { 
        int param1; 
        public int check(int param1) 
        { 
         this.param1 = param1; //this.param1 is the class variable param1, param1 is the function parameter with a local scope 
         return 0; 
        } 
    } 
    
    1

    这里有一个情况,你可能想用'this'来说明一下。

    class Outer { 
        A a; 
    
        public A getA() { 
         return a; 
        } 
    
        class InnerSuper { 
          A a; 
    
          public A getA() { 
           return a; 
          } 
        } 
    
        class Inner extends InnerSuper { 
         public void test() { 
          A a = Outer.this.getA(); 
          A a = this.getA(); 
         } 
        } 
    } 
    
    相关问题