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