从另一个内部 class 访问内部 class´ 方法

Accessing an inner class´ method from another inner class

我尝试从另一个内部 class 访问内部 class 方法。两个内部 classes 都在同一个外部 class 中声明:

class OuterFoo{

    class innerFoo1{

        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
        }
    }

    class innerFoo2{

        public void methodFoo2(){
           System.out.println(" Hello, i am in the inner foo 2");
        }
    }
}

现在,我想从 methodFoo2 访问 methodFoo1

任何帮助将不胜感激。

您需要引用另一个内部 class 的实例。像这样:

public class OuterFoo {
    private class InnerFoo1 {
        private void helloFoo1 () {
            System.out.println("foo1");

            InnerFoo2 foo2 = new InnerFoo2();
            foo2.helloFoo2();
        }
    }
    private class InnerFoo2 {
        private void helloFoo2 () {
            System.out.println("foo2");

            InnerFoo1 foo1 = new InnerFoo1();
            foo1.helloFoo1();
        }
    }
}

如果你的内心 类 被实例化为 OuterFoo

你可以这样做:

class OuterFoo{
    final innerFoo1 if1 = new innerFoo1();
    final innerFoo1 if2 = new innerFoo2();

    class innerFoo1{
        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
            if2.methodFoo2();
        }
    }

    class innerFoo2{
        public void methodFoo2(){
            System.out.println(" Hello, i am in the inner foo 2");
            if1.methodFoo1();
        }
    }
}

取决于你想要你的真实程序应该做什么(如果你不需要实例化 class InnerFoo 并且只需要调用静态方法),你也可以使 class innerFoo2 和方法 methodFoo2 static.

public class OuterFoo{
class innerFoo1{
    public void methodFoo1(){
        System.out.println(" Hello, i am in the inner foo 1");
        OuterFoo.innerFoo2.methodFoo2();
    }
}
static class innerFoo2{
    public static void methodFoo2(){
        System.out.println(" Hello, i am in the inner foo 2");
    }
}

}

试试这个代码

public class OuterFoo{

    class innerFoo1{

        public void methodFoo1(){
            System.out.println(" Hello, i am in the inner foo 1");
        }
    }

    class innerFoo2{

        public void methodFoo2(){
            System.out.println(" Hello, i am in the inner foo 2");
        }
    }

    void displayInnerFoo1(){
        innerFoo1 object1= new innerFoo1();
        object1.methodFoo1();

    }

    void displayInnerFoo2(){
        innerFoo2 object2= new innerFoo2();
        object2.methodFoo2();

    }
    public static void main(String args[]){ 
        OuterFoo objectParent= new OuterFoo();
        objectParent.displayInnerFoo1();
        objectParent.displayInnerFoo2();


    }

}

创建内部对象 class 然后简单地使用点运算符访问它。

ClassName obj = new ClassName();
obj.MethodName();