类中的静态方法不能直接调用动态方法
2017-03-08 13:58
483 查看
转载于 sunny2038的专栏,并加上自己的备注
写了一个内部类Coding。并在主方法main中调用
结果编译时出现:No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instance of type E(e.g. x.new A() where x is an instance of E).
E指代我写的那个内部类。
没有可访问的内部类E的实例,必须分配一个合适的内部类E的实例(如x.new A(),x必须是E的实例。)看着这句提示,我就纳闷了,我已经用new实例化了这个类,为什么还不行呢。
如下图:
Coding内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
如下图:
写了一个内部类Coding。并在主方法main中调用
结果编译时出现:No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instance of type E(e.g. x.new A() where x is an instance of E).
E指代我写的那个内部类。
没有可访问的内部类E的实例,必须分配一个合适的内部类E的实例(如x.new A(),x必须是E的实例。)看着这句提示,我就纳闷了,我已经用new实例化了这个类,为什么还不行呢。
如下图:
Coding内部类是动态的,也就是开头以public class开头。而主程序是public static class main。在Java中,类中的静态方法不能直接调用动态方法。只有将某个内部类修饰为静态类,然后才能够在静态类中调用该类的成员变量与成员方法。所以在不做其他变动的情况下,最简单的解决办法是将public
class改为public static class.
如下图:
相关文章推荐
- day59(5.9)程序报错类型之类中的静态方法不能直接调用动态方法
- 调用静态方法是不能用this关键字的。直接使用类名就可以了
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- java中静态方法中为什么不能使用this、super和直接调用非静态方法
- 为什么静态方法中不能调用动态方法?
- 动态的内部类不能在静态方法中直接声明对象
- Java在静态方法中直接调用了动态方法出现错误
- main方法不能直接调用 非静态方法
- vb.net静态动态调用c++dll的方法
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- static方法可以直接从普通方法(regular method)中调用,但是普通方法不能直接从static方法中调用,为什么?
- 《黑马程序员》 静态方法中不能直接创建内部类实例对象的原因
- 为什么不能从静态的方法里面调用非静态方法,或变量?
- bcb平台的C++dll的静态调用法和动态调用法的方法
- 动态及静态的调用Action中的方法
- 使用最新struts2(2.3.15.2),不能使用DMI动态调用方法。在struts.xml中打开动态方法调用。
- c#静态方法不可以直接调用实例方法
- 通过DLL路径,实现动态调用动态链接库中指定类的(静态)方法和属性
- java 程序加载过程---3--类中申明同时申明类的静态对象 创建类的实例 访问类的静态变量 调用类的静态方法 使用反射方法 初始化类的子类对象 直接使用java.exe 调用某个类
- static方法不能直接访问类内的非static变量和不能调用this