天天看點

Must qualify the allocation with an enclosing instance of type Stu

最近在看Java,在編譯寫書上一個例子時,由于書上的代碼隻有一部分,于是就自己補了一個内部類。結果編譯時出現: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指代我寫的那個内部類。

根據提示,沒有可通路的内部類E的執行個體,必須配置設定一個合适的内部類E的執行個體(如x.new A(),x必須是E的執行個體。)看着這句提示,我就納悶了,我已經用new執行個體化了這個類,為什麼還不行呢。

于是百度谷歌了一下相關資料。原來我寫的内部類是動态的,也就是開頭以public class開頭。而主程式是public static class main。在Java中,類中的靜态方法不能直接調用動态方法。隻有将某個内部類修飾為靜态類,然後才能夠在靜态類中調用該類的成員變量與成員方法。是以解決辦法是将public class改為public static class.

在這裡記下這個問題,也方面遇到同樣問題的朋友查閱