我来自C ++并从Java开始。所以我知道我不能使用super和静态函数,但代码有什么问题?
class TestClass {
public static void main(String[] args) {
Test x = new Test(); // Here is the error Why?
}
class Test {
//attributes
String attribute;
}
}
谢谢你的帮助!
答案 0 :(得分:0)
Test
类是TestClass
类的内部类。因此,为了创建Test
类的对象,您必须创建一个封闭的TestClass
类的对象。
您可以将Test
课程移到TestClass
以外的地方来修复此错误:
class Test {
//attributes
String attribute;
}
class TestClass {
public static void main(String[] args) {
Test x = new Test();
}
}
或使其成为嵌套(静态)类(不需要封闭实例):
class TestClass {
public static void main(String[] args) {
Test x = new Test();
}
static class Test {
//attributes
String attribute;
}
}
如果你坚持让Test
成为内部类,你可以写:
class TestClass {
public static void main(String[] args) {
TestClass.Test x = new TestClass().new Test();
}
class Test {
//attributes
String attribute;
}
}
答案 1 :(得分:0)
因为Test
是非静态类并且试图从静态上下文(即从main()方法(静态)访问它),这意味着您需要创建{{1的实例/对象首先是类。
TestClass
应该是
Test x = new Test();
或将TestClass.Test x = new TestClass().new Test();
声明为静态。
Test