Java:在嵌套静态类中引用外部类

这个问题在这里已经有了答案:

  • Java内部类和静态嵌套类23答案

  • 你显然需要一个OuterClass类型的对象:

    public void someMethod() {
        OuterClass oc = new OuterClass();
        OtherClass.otherMethod(oc);
    }
    

    如果你的内部类不是静态的,那么你可以这样做:

    //remove static here
    private class InnerClass { 
        public void someMethod() {
            OtherClass.otherMethod(OuterClass.this);
        }
    }
    

    你应该知道嵌套类的不同之处 - 静态的非静态的 。 静态嵌套类就像其他类一样,只是在其他类中定义的类(通常是因为封装原则)。 内部静态类实例不知道外部类实例。

    嵌套的内部类(非静态)要求内部类的对象存在于外部类的实例中。 这就是为什么你可以通过OuterClass.this访问它。


    最简单的方法是在构造函数或方法中传递outerClass的实例,因为innerClass不知道这个类。

    喜欢这个:

    public void someMethod(OuterClass outerClass) {
       OtherClass.otherMethod(outerClass.myMethod());
    }
    
    链接地址: http://www.djcxy.com/p/92013.html

    上一篇: Java: reference outer class in nested static class

    下一篇: Using a static inner class