静态方法中不能创建内部类的实例
2014-10-26 17:07
344 查看
如上图所示,Outter是一个普通的类,Inner是Outter类里面的内,属于内部类。在main方法中试图创建Inner的实例,MyEclipse会有报错提示,大意是:“没有Outter可以访问的实例,必须指定一个Outter类的实例(如:x.new A() 其中x就是一个Outter类的实例)”
原因:
内部类的特点是可以访问外部类的成员变量,而成员变量只能在创建了实例之后才能访问。
那么main方法是个静态方法,即可以不创建Outter的实例就能访问这个方法,这时候如果Inner可以创建实例,那么inner的实例就有可能访问Outter对象的成员变量。
但main方法是静态方法可以不创建对象就运行,Outter对象都没有创建,Inner就算能创建对象,也有可能访问不到Outter对象的成员变量。
所以,是不能在静态方法中创建内部类的对象,防止该内部类对象在外部类对象创建前访问外部类的成员变量。
相关文章推荐
- 《黑马程序员》 静态方法中不能直接创建内部类实例对象的原因
- 内部类访问外部类的变量必须是final吗,java静态方法中不能引用非静态变量,静态方法中不能创建内部类的实例
- 静态方法不能new内部类实例对象
- java静态方法中不能创建内部类对象
- 静态方法不能直接调用实例方法和变量,但可以间接调用(即在静态方法中创建类的实例,然后调用)
- java 内部类为什么不能用静态方法
- 7.7.2: Bean实例的创建方式及依赖配置---使用静态工厂方法创建Bean
- 实例成员变量不能在静态方法中访问
- spring创建bean的三种方式-通过构造器,通过静态工厂方法,通过实例工厂方法
- 静态方法中使用内部类不能通过new
- ehcache 创建创建单一实例与否的判断,以及,哪个静态方法,只在不存在的时候创建
- 静态方法中不能new内部类的实例对象的总结
- 为什么不管是静态内部类的普通方法还是静态方法都不能访问外部类的实例变量
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- 静态方法中不能new内部类的实例对象的总结
- 创建内部类实例方法
- 今天发现c#中的实例后的对象是不能调用静态方法,以前学Java的时候是可以的.
- 在静态方法中实例化非静态类内部类时报错
- 外部类的静态方法内不能实例化内部类的对象
- 动态的内部类不能在静态方法中直接声明对象