class Hello {
class Thing {
public int size;
Thing() {
size = 0;
}
}
public static void main(String[] args) {
Thing thing1 = new Thing();
System.out.println("Hello, World!");
}
}产生错误:No enclosing instance of type text3 is accessible. Must qualify the allocation with an enclosing instance of type text3 (e.g. x.new A() where x is an instance of text3).
解决办法:将Thing类声明为一个非静态的内部类。这意味着它必须与Hello类的一个实例关联。
在代码中,我正试图从静态的上下文中创建一个Thing实例。这正是编译器所拒绝的。
三种解决办法:
将Thing更改为静态嵌套类。
static class Thing创建一个Hello实例,然后创建一个Thing实例。
public static void main(String[] args) { Hello h = new Hello(); Thing thing1 = h.new Thing(); // hope this syntax is right, typing on the fly :P }将Hello Thing移出Hello类。
本文探讨了在Java中尝试从静态上下文创建非静态内部类实例时遇到的错误,并提供了三种解决方案:将内部类声明为静态;通过创建外部类的实例来创建内部类的实例;或将内部类移出外部类。
724

被折叠的 条评论
为什么被折叠?



