2009-09-25 68 views
6

假設我有:的Java:外部和內部類方法之間的模糊名稱

public class OuterClass() { 

    public class InnerClass { 
    public void someMethod(int x) { 
     someMethod(x); 
    } 
    } 

    public void someMethod(int x) { 
    System.out.println(x); 
    } 
} 

如何解決外部類的someMethod()和內部類的someMethod()之間的不確定性?

回答

13

您可以參考外部OuterClass.this或調用方法OuterClass.this.method()

但是,作爲設計的一個要點,至少可以說,分享這個名字是令人困惑的。如果內部類表示擴展或抽象方法的具體實現,但通過調用super.method會更清楚,這可能是合理的。直接調用超級方法,(看起來你打算做什麼?),令人困惑。

+0

+1對於「你不需要這樣命名,是嗎?」 – 2009-09-25 20:03:33

6

它範圍外部類與OuterClass.this.someMethod()

public class OuterClass { 

    public class InnerClass { 

    public void someMethod(int x) { 
     OuterClass.this.someMethod(x); 
    } 
    } 

    public void someMethod(int x) { 
    System.out.println(x); 
    } 
} 
+0

唉......史蒂夫·B在我之前發佈了同樣的答案。示例代碼我將在此處留下。 – SingleShot 2009-09-25 18:47:14

1

重命名不確定性是一個很好的做法。特別是如果你在向上和向後的架構中應用它。

+1

如果類正在實現一個接口,這將不起作用。 – 2012-12-07 19:16:33