No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x is an instance of Test).
最近在尝试写一Demo的时候,碰到这个异常,导致Eclipse报错。
package com.frank;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
}
class A{
}
}
当时没有注意,仔细想了想,也是合理的。main是Test类的static方法,按照常理它只能访问Test类中static资源,而class A是非static所以报错了。解决方法很简单,给class A添加static属性就可以了。
package com.frank;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
}
static class A{
}
}
当然还有另外一种方式,没有必要把A放在Test中做内部类,只要把它移到Test外部地方定义也可以解决这个问题。
package com.frank;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
A a = new A();
}
}
class A{
}