2017-01-09 58 views
0

我有一個學習Java 7 OCP考試的學生,他向我介紹了這個問題。他和我的理解是一個局部變量不能在法的內部類中使用,除非它是決賽,但他提出我用下面的代碼它運行得很好:局部變量不能在內部類中使用。那麼爲什麼這個代碼工作?

public class TestC195 { 

    public static void main(String[] args) { 
     TestC195 myObject = new TestC195(); 
     myObject.doStuff(); 
    } 

    private String x = "Outer 2"; 

    void doStuff() { 
     String z = "local"; 

     class myInner { 
      public void seeOuter() { 
       System.out.println("outer: " + x); 
       System.out.println("outer: " + z); 
      } 
     } 
     myInner in = new myInner(); 
     in.seeOuter(); 

    } 

} 

輸出是:

outer: Outer 2 
outer: local 

那麼我們都缺少什麼?

+5

這是[類成員(https://docs.oracle.com/javase/tutorial/java/javaOO/classvars.html) 。 – Maroun

+3

您可能正在使用Java 8進行編譯,其規則略有變化:變量只能是「有效」最終的。 –

回答

3

如果你是用java編譯8這是因爲它是有效的最後 link here

相關問題