静态方法中不可直接new内部类实例对象问题

Posted 十一路客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了静态方法中不可直接new内部类实例对象问题相关的知识,希望对你有一定的参考价值。

结论:静态方法中,是不可以直接new内部类实例对象和引用外部类的成员变量的。

原因:1、外部类中的成员变量、方法以及内部类其实三者都在同一个级别上,三者都必须由外部类的实例对象才能调用(举例:当一个方法被调用时,此时肯定已经有了外部类的实例对象。),故而他们三者可以互相引用。

2、而静态main方法因为其方法为静态,在类编译时,便生成了该静态方法,故而其运行不依赖于外部类的实例对象,因为内部类要依赖于外部类的实例对象才能创建,所以在该静态方法中直接new内部类肯定会报错;而在其他普通方法中可以new内部类,因为其他的普通方法必须有了外部类的实例对象,才能可能会调用该方法,既然有了实例对象,在普通方法中便能直接new内部类了。

解决办法:方式1:既然new内部类需要外部实例对象,那就直接在静态main方法中先实例化一个外部类对象,再用外部类对象new内部类。

方式2:既然静态方法不能直接new内部类,那就把它放到普通方法中直接new,然后再在静态main方法中,让外部类的实例对象,调用该普通方法。

方式3:可以将这个内部类改成静态内部类,则该内部类就成了不依附外部类实例对象的成员了,那么他就可以自由实例化了

原文:https://blog.csdn.net/aizhihua19900214/article/details/79714235 
 

以上是关于静态方法中不可直接new内部类实例对象问题的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 静态方法不能访问直接

(转)Java静态内部类的实例化问题

Java自学-接口与继承 内部类

内部类和 外部类相互访问

内部类

java static学傻了,;类方法中给成员变量赋值必须先new个对象,普通方法却不用,为啥呢?