java 靜態方法呼叫非靜態內部類報錯
阿新 • • 發佈:2018-12-26
Error:
No enclosing instance of type *** is accessible. Must qualify the allocation with an enclosing instance of type *** (e.g. x.new A() where x is an instance of Test).
[***代表類名]
public class Test { public static void main(String[] args) { /**第一句沒問題*/ A a = new A(); /**第二句錯誤資訊: * No enclosing instance of type Test is accessible. * 【沒有Test型別可以被訪問】 * Must qualify the allocation with an enclosing instance of type Test * (e.g. x.new A() where x is an instance of Test). * 【就是說Test的例項不存在,所以Test類的內部類是更是無從談起】 * 【而A類不同A和main方法一樣都在棧中可以被訪問到(並不需要首先例項化Test類)】 * */ B b = new B(); } static class A { public A() { System.out.println("我是靜態內部類的空引數建構函式"); } } class B { public B() { System.out.println("我是非靜態內部類的空引數建構函式"); } } }
參考:http://baike.baidu.com/link?url=wj-ZWDuDFKakckKytRRARWqNKpDr5LzHOCgKzxWl4WHBV4RLxOyGpSOydMmWPK1myEJkEbu_XkCZiuns617aYa點選開啟連結
JAVA語言中編輯
有時你希望定義一個類成員,使它的使用完全獨立於該類的任何物件。通常情況下,類成員必須通過它的類的物件訪問,但是可以建立這樣一個成員,它能夠被它自己使用,而不必引用特定的例項。在成員的宣告前面加上關鍵字static(靜態的)就能建立這樣的成員。如果一個成員被宣告為static,它就能夠在它的類的任何物件建立之前被訪問,而不必引用任何物件。你可以將方法和變數都宣告為static。static 成員的最常見的例子是main()。因為在程式開始執行時必須呼叫main() ,所以它被宣告為static。 宣告為static的變數稱為希望路過的大牛多多批評指正。