无法在 main() 中实例化嵌套的 class

Cannot instantiate a nested class inside main()

下面的简单代码会产生错误:

non-static variable this cannot be referenced from a static context

这个错误是什么意思?好的,我知道这是实例化内部 class objects.But 的错误语法,我不清楚我是如何 "referencing non static variable this from a static context" 这样做的。"

public class Test{
    class Test1{}
    public static void main(String[] args) {
    // generates an error
    new Test1(); 
    }
}

上面代码中的 new Test1() 是否表示 this.new Test1();

您可以看到下面的代码:

public class Test {

static class Test1 {
}

public static void main(String[] args) {

    Test.Test1 obj = new Test.Test1();
}}

您还必须引用外部 class Test

Test1 inner = new Test().new Test1();

如果内部 Test1 是静态的,那么它将是

 Test1 inner = Test.new Test1();

如果申请要求允许您将 class Test1 设为 static class,则执行此操作。

public class Test {

    static class Test1 {
    }

    public static void main(String[] args) {
        new Test.Test1();
    }
}

如果 class Test1 需要 非静态 ,则执行此操作。

public class Test {

    class Test1 {
    }

    public static void main(String[] args) {
        new Test().new Test1();
    }
}

注意两种情况下实例化的语法。