再學Java 之 解決No enclosing instance of type * is accessible


深夜,臨睡前寫了個小程序,出了點小問題

public class Test_drive {
    
    public static void main(String[] args){
        A a = new A();              //報錯
        B b = new B();              //報錯
        System.out.println(b instanceof A);
    }
    class A{
        int a;
    }
    class B extends A{
    }
}

上面兩個語句報錯信息如下:

No enclosing instance of type Test_drive is accessible. Must qualify the allocation with an enclosing instance of type Test_drive (e.g. x.new A() where x is an instance of Test_drive).

 

(1)在stackoverflow上面查找到了類似的問題:http://stackoverflow.com/questions/9560600/java-no-enclosing-instance-of-type-foo-is-accessible/9560633#9560633

 

(2)下面簡單說一下我的理解:

  在這里,A和B都是Test_drive的內部類,類似於普通的實例變量,如果類的靜態方法不可以直接調用類的實例變量。在這里,內部類不是靜態的內部類,所以,直接賦值(即實例化內部類),所以程序報錯。

 

(3)解決的方法可以有以下兩種:

  (1)將內部類定義為static,即為靜態類

  (2)將A a = new A();B b = new B();改為:

Test_drive td = new Test_drive();
A a = td.new A();
B b = td.new B();

 

附注:寫到這里好困。如果大家有更好的理解,請在下面留言。謝謝。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM