关于JAVA的内部类

Bla*_*mba -3 java

我正在学习Java中的内部类,但我编写这段代码,当我编译它时,我得到了这个错误: Error:(84, 23) java: non-static variable this cannot be referenced from a static context.

    public class Main {

    class Outer {
        private String string;

        Outer(String s) {
            this.string = s;
        }

        public Inner inner() {
            return new Inner();
        }

        class Inner {
            @Override
            public String toString() {
                return string;
            }
        }
    }

    public static void main(String[] args) {
        Outer outer = new Outer("yang");
      //  System.out.println(outer.inner().toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

我已将内部类更新为此,它可以工作.

public class Main {

    static class Outer {
        private String string;

        Outer(String s) {
            this.string = s;
        }

        public Inner inner() {
            return new Inner();
        }

        class Inner {
            @Override
            public String toString() {
                return string;
            }
        }
    }
    public Outer outer(String s){
        return new Outer(s);
    }
    public static void main(String[] args) {
      //  Main main = new Main();
        Outer outer = new Outer("YANG");
        System.out.println(outer.inner().toString());
    }
}
Run Code Online (Sandbox Code Playgroud)

use*_*421 5

尽管它的名字,Outer它本身就是一个内部类,因此不能在没有实例的情况下构造Main.你需要:

Outer outer = new Main().new Outer("yang");
Run Code Online (Sandbox Code Playgroud)