静态方法中不可直接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 
 

猜你喜欢

转载自blog.csdn.net/xyr05288/article/details/83277440