今天写代码的时候遇到了一个问题,main方法中创建内部类的实例时,编译阶段出现错误,查看错误描述:
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).
代码如下:
package test;
public class Test {public static void main(String[] args) {
Person person = new Person("zzz");
}
class Person{
private String name;
public Person(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
百度了一下相关资料。原来内部类是动态的,也就是开头以public class开头(无static关键字修饰)。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以解决办法是将class改为static class.
from: https://www.2cto.com/kf/201502/375549.html; https://www.cnblogs.com/runnigwolf/p/5570810.html;