最近在看Java,在編譯寫書上一個(gè)例子時(shí),由于書上的代碼只有一部分,于是就自己補(bǔ)了一個(gè)內(nèi)部類。結(jié)果編譯時(shí)出現(xiàn):No enclosing instance of type E is accessible. Must qualify the allocation with an enclosing instance of type E(e.g. x.new A() where x is an instance of E). E指代我寫的那個(gè)內(nèi)部類。 根據(jù)提示,,沒有可訪問的內(nèi)部類E的實(shí)例,必須分配一個(gè)合適的內(nèi)部類E的實(shí)例(如x.new A(),,x必須是E的實(shí)例,。)看著這句提示,我就納悶了,,我已經(jīng)用new實(shí)例化了這個(gè)類,,為什么還不行呢。 于是百度谷歌了一下相關(guān)資料,。原來我寫的內(nèi)部類是動(dòng)態(tài)的,,也就是開頭以public class開頭。而主程序是public static class main,。在Java中,,類中的靜態(tài)方法不能直接調(diào)用動(dòng)態(tài)方法。只有將某個(gè)內(nèi)部類修飾為靜態(tài)類,,然后才能夠在靜態(tài)類中調(diào)用該類的成員變量與成員方法,。所以在不做其他變動(dòng)的情況下,最簡(jiǎn)單的解決辦法是將public class改為public static class. 在這里記下這個(gè)問題,,也方面遇到同樣問題的朋友查閱,。 |
|