No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst
Posted Summer-Zheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst相关的知识,希望对你有一定的参考价值。
今日遇到一个报错如下:
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).
问题出现的原因是:
因为在做Demo测试,我写的内部类是动态的,即public class开头无static关键字修饰,而测试主程序是静态的main方法。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,才可以再静态类中调用带类的成员变量和成员方法。
为什么静态方法不能直接访问非静态成员呢?
静态成员是在JVM的ClassLoader加载类的时候初始化的,而非静态成员是在创建对象,也就是new操作的时候才初始化的。类加载的时候初始化的静态成员已经分配内存空间,所以可以访问,而非静态成员还没有通过new创建对象而进行初始化,所有当然不能访问了。
解决方案:
1.将动态内部类改为静态(public static class)。
2.将内部类改为外部类。
3.别用静态main方法调用。
以上是关于No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst的主要内容,如果未能解决你的问题,请参考以下文章
No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing
Java中出现No enclosing instance of type XXX is accessible问题
No enclosing instance of type test is accessible. Must qualify the allocation with an enclosing inst
Java变异出现错误:No enclosing instance of type XXX is accessible
Java中报错No enclosing instance of type caiquan is accessible. Must qualify the allocation with an encl
java出现No enclosing instance of type main is accessible. Must qualify the allocation with an enclosin