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

时间:2015-07-09 07:09:31

标签: java static inner-classes

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

  

非静态变量,不能从静态上下文引用

这个错误是什么意思?好吧我明白这是用于实例化内部类对象的错误语法。但是我不清楚我是如何通过这样做来“从静态上下文中引用非静态变量”。“

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

上面代码中的新Test1()意味着this.new Test1();

3 个答案:

答案 0 :(得分:2)

如果应用程序要求允许您制作class Test1 static课程,请执行此操作。

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

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

答案 1 :(得分:0)

您可以看到以下代码:

public class Test {

static class Test1 {
}

public static void main(String[] args) {

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

答案 2 :(得分:0)

您还必须引用外部类Test

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

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

 Test1 inner = Test.new Test1();