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类。