无法在 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();
}
}
注意两种情况下实例化的语法。
下面的简单代码会产生错误:
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();
}
}
注意两种情况下实例化的语法。