No enclosing instance of type Test is accessible.报错原因

今天写代码的时候遇到了一个问题,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;  

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值