No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing i...
生活随笔
收集整理的這篇文章主要介紹了
No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing i...
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
最近在刷AC,在編譯時出現:
No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing instance of type Main (e.g. x.new A() where x is an instance of Main).
根據提示,沒有可訪問的內部類的實例,必須分配一個合適的內部類的實例(如x.new A(),x必須是內部類的實例。看著這句提示,我。。。
我已經用new實例化了這個類,為什么還不行呢。
于是仔細看了一下IDE提示的地方,看了一下代碼,突然發現,一般AC題目的時候,要求main方法是static的,而我寫的Student內部類是非靜態的,所以無法訪問
最簡單的改法:將Student改為靜態方法之后,不再報錯。
這個錯誤很低級,將其總結,提醒自己,之后不可再錯。
此處,我們引出另外一個知識點,Java靜態方法訪問非靜態方法的實現方法有哪些?
不多說,直接上代碼:
1) 將內部類修改,變為外部
class test{ public static void main(String args[]){ System.out.println(new test1().methodname()); } } class test1{ public String methodname(){ System.out.println("調用了非靜態方法"); } }2) 將內部類修改為靜態內部類
class test{ public static void main(String args[]){ System.out.println(new test1().methodname()); } public class static test1{ public String methodname(){ System.out.println("調用了非靜態方法"); } } }總結
以上是生活随笔為你收集整理的No enclosing instance of type Main is accessible. Must qualify the allocation with an enclosing i...的全部內容,希望文章能夠幫你解決所遇到的問題。