下面的简单代码会产生错误:
非静态变量,不能从静态上下文引用
这个错误是什么意思?好吧我明白这是用于实例化内部类对象的错误语法。但是我不清楚我是如何通过这样做来“从静态上下文中引用非静态变量”。“
public class Test{
class Test1{}
public static void main(String[] args) {
// generates an error
new Test1();
}
}
上面代码中的新Test1()意味着this.new Test1();
答案 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();