1. 程式人生 > >靜態方法中不可直接new內部類例項物件問題

靜態方法中不可直接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