作者:arliejun | 来源:互联网 | 2023-10-11 18:18
篇首语:本文由编程笔记#小编为大家整理,主要介绍了静态方法中不可直接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