从另一个内部类访问内部类的方法



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

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

任何帮助都将不胜感激。

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

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();
        }
    }
}

根据您希望实际程序应该做什么(如果您不需要实例化类InnerFoo,只需要调用静态方法),您也可以使类innerFoo2和方法methodFoo2为静态。

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");
    }
}

}

如果您的内部类已安装到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();
        }
    }
}

试试这个代码

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();

    }
}

创建内部类的Object,然后简单地使用点运算符来访问它。

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

最新更新