如何从内部类中的方法获取父对象?
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本身?
答案 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;
}