的Java:外部和内部类方法之间的模糊名称

问题描述:

假设我有:的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()之间的不确定性?

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

但是,作为设计的一个要点,至少可以说,分享这个名字是令人困惑的。如果内部类表示扩展或抽象方法的具体实现,但通过调用super.method会更清楚,这可能是合理的。直接调用超级方法,(看起来你打算做什么?),令人困惑。

+0

+1对于“你不需要这样命名,是吗?” – 2009-09-25 20:03:33

它范围外部类与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

如果类正在实现一个接口,这将不起作用。 – 2012-12-07 19:16:33