java错误: Must qualify the allocation with an enclosing instance of type

错误:

No enclosing instance of type Test1 is accessible. Must qualify the allocation with an enclosing instance of type Test1 (e.g. x.new A() where x is an instance of Test1).

代码:
public class Test1 {
	int x = 0;
	public static void main(String args[]){
		new A();
	}
	class A{
		public A(){
			System.out.println(x);
		}
	}
}

为什么会有错误呢?

我们都知道,在执行main()函数时Test1类还没有生成,而A是内部类,在生成内部类的时候必须首先生成外部类。

所以问题的解决方式有两种:

1.将class A改为static class A,并把int x = 0;改为static int x = 0;

这是根据编辑器提示错误改的,静态方法不能调用非静态方法或类、属性

2.将生成A的代码更改如下

new Test1().new Test1a();
全部代码:

public class Test1 {
	int x = 0;
	public static void main(String args[]){
		//new Test1a();
		new Test1().new Test1a();
	}
	class Test1a{
		public Test1a(){
			System.out.println(x);
		}
	}
}

如此即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值