Java: No enclosing instance of type xxx is accessible

public class KMeans {
	class point{
		double x;
		double y;
		point(double x,double y){
			this.x=x;
			this.y=y;
		}
	}
	public static void main(String args[]) throws IOException {
		point p=new point(1,1);
	}
}

上面这段代码会遇到No enclosing instance of type xxx is accessible(xxx类型的装入实例不可用)报错,原因在于编译运行KMeans类的时候,并没有产生实例(你看main也是静态方法);而KMeans下包含的point内部类是非静态的,只有实例对象才能使用它。外部类是直接被加载到内存了,而内部非静态类就需要一个实例对象来包含它。

知道了这一点,就可以得出结局方案,可以把point改为静态类,也可以新建KMeans实例后再使用point类。

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1q1xzkj9mydbq

发表评论

电子邮件地址不会被公开。