如何寫內部類,內部類中如何呼叫。
阿新 • • 發佈:2018-12-26
錯誤資訊:
No enclosing instance of type Test is accessible. Must qualify the allocation with an enclosing instance of type Test (e.g. x.new A() where x
is an instance of Test).
public class Test { public static void main(String[] args) { Test test = new Test(); Beans xm = test.new Beans(); } public class Beans{ } }
x指代我寫的那個內部類。
根據提示,沒有可訪問的內部類Test的例項,必須分配一個合適的內部類Test的例項(如x.new A(),x必須是Test的例項。)看著這句提示,我就納悶了,我已經用new例項化了這個類,為什麼還不行呢。
於是百度谷歌了一下相關資料。原來我寫的內部類是動態的,也就是開頭以public class開頭。而主程式是public static class main。在Java中,類中的靜態方法不能直接呼叫動態方法。只有將某個內部類修飾為靜態類,然後才能夠在靜態類中呼叫該類的成員變數與成員方法。所以解決辦法是將public
class改為public static class.
或者改成上面的new Test().new Beans():
當然如果想看起來不這麼怪異,也可以寫成另外加一個方法來例項化這個內部類,再用外部類的例項來呼叫方法