Java: reference outer class in nested static class
本问题已经有最佳答案,请猛点这里访问。
我有这样一个类结构:
1 2 3 4 5 6 7 8 9 | public class OuterClass { private static class InnerClass { public void someMethod() { OtherClass.otherMethod(<???>); } } |
它是指其他类
1 2 3 4 5 6 7 | public class OtherClass { public static void otherMethod(OuterClass) { .... } } |
我正在想办法用什么来取代江户十一〔一〕号。如何从内部静态类中引用外部类的实例?我要做的是提到
您显然需要一个
1 2 3 4 | public void someMethod() { OuterClass oc = new OuterClass(); OtherClass.otherMethod(oc); } |
如果您的内部类不是静态的,那么您可以执行以下操作:
1 2 3 4 5 6 | //remove static here private class InnerClass { public void someMethod() { OtherClass.otherMethod(OuterClass.this); } } |
您应该知道嵌套类(静态类和非静态类)之间的区别。静态嵌套类只是彼此类似的类,只是在其他类中定义的(通常是由于封装原理)。内部静态类实例不了解外部类实例。
嵌套的内部类(非静态)要求内部类的对象存在于外部类的实例中。这就是为什么你可以通过
最简单的方法是在构造函数或方法中传递outerClass的实例,因为innerClass不知道这个类。
这样地:
1 2 3 | public void someMethod(OuterClass outerClass) { OtherClass.otherMethod(outerClass.myMethod()); } |