如何使用另一个内部类方法的内部类实例?

Flu*_*dan 1 java inner-classes

public class Ex7 {
    private int fld;

    private void meth(int val) {
        fld = val;
        System.out.println(" meth() -> fld = " + fld);
    }

    public class Ex7Inner1 {
        void operateOnFld() {
            fld = 12;
        }

        void operateOnMeth() {
            meth(10);
        }

        public void bar() {
            System.out.println(" bar() ");
        }
    }

    class Ex7Inner2 {
        Ex7Inner1 i1 = new Ex7Inner1();
        // how to call i1.bar() ??
        i1.bar();
    }
}
Run Code Online (Sandbox Code Playgroud)

Eli*_*ght 8

你的问题是你需要调用i1.bar()一个函数.例如

class Ex7Inner2 {
    Ex7Inner1 i1 = new Ex7Inner1();  // this is now a field of the Ex7Inner2 class
    public void callBar() {
        i1.bar();                    // this will work
    }
}
Run Code Online (Sandbox Code Playgroud)

将来,您可能会发现,如果您在问题中包含错误,那么人们可以提供更多帮助,我现在就会这样做.当您尝试按照自己的方式编译代码时,会出现类似的错误

Ex7.java:26: <identifier> expected
  i1.bar();
        ^
1 error
Run Code Online (Sandbox Code Playgroud)

这是因为你可以在方法之外做的唯一事情(就像你原来的那样)是声明变量.所以它期待一个"标识符",它意味着"你要声明的变量的名称".所以,如果你说过

String s;
Run Code Online (Sandbox Code Playgroud)

s将是标识符.