Java:在嵌套的静态类中引用外部类
我的班级结构如下:
public class OuterClass {
private static class InnerClass {
public void someMethod() {
OtherClass.otherMethod(<???>);
}
}
它指的是另一个类OtherClass
的静态方法:
public class OtherClass {
public static void otherMethod(OuterClass) {
....
}
}
我正试图弄清楚应该用什么来代替<???>
。如何从内部静态类中引用外部类的实例?我想做的是指OuterClass
的隐式this
# 1 楼答案
显然,您需要一个
OuterClass
类型的对象:如果您的内部类不是静态的,那么您可以:
您应该知道嵌套类之间的区别——静态的和非静态的。静态嵌套类与其他类一样,只是在其他类中定义的类(通常是因为封装原理)。内部静态类实例不知道外部类实例
嵌套的内部类(非静态)要求内部类的对象存在于外部类的实例中。这就是为什么你可以通过
OuterClass.this
访问它# 2 楼答案
最简单的方法是在构造函数或方法中传递outerClass的实例,因为innerClass不知道这个类
像这样: