嵌套类的对象如何访问它们嵌套的对象?

时间:2011-02-15 10:17:38

标签: java

如何从内部类中的方法获取父对象?

class OuterClass {
    public outerMethod() {
         // this refers to the object in the outer class
    }
    class InnerClass {
        public innerMethod() {
             // this refers to the object in the inner class
             // How do I get my current parent object
        }
    }
}

一种方法是添加类似

的方法
public OuterClass getthis() {
    return this;
}

还有其他建议吗?有没有办法从java本身?

5 个答案:

答案 0 :(得分:8)

outerClass.this.method()

班级名称应该以大写字母开头,它可以减少像这样的案件中的混淆。

答案 1 :(得分:2)

我认为应该这样做:

class outerClass {
    public outerMethod() {
         // this refers to the object in the outer class
    }
    class innerClass {
        public innerMethod() {
             // Here's how to get and use the parent class reference
             outerClass daddy = outerClass.this;
             daddy.outerMethod();

             // However, you can also just call the method, and 
             // the "outer this" will be used.
             outerMethod();
        }
    }
}

BTW - 声明一个名称不以大写字母开头的类是极其糟糕的风格。如果您选择忽略约定,则可以提醒反复

答案 2 :(得分:0)

outerClass.this可以解决问题。为了清楚起见,您的班级名称应以大写字母开头。

答案 3 :(得分:0)

outerClass.this.outerMethod();

这显然不适用于静态内部类,因为没有外部类的封闭实例。

在我忘记之前,请阅读Java Code Conventions。 CLass应该以大写字母开头。

答案 4 :(得分:0)

public outerClass getthis() {
    return outerClass.this;
}