2017-07-08 71 views
0

我試圖訪問內部類中的h變量,但錯誤不斷顯示「無法將值賦予最終變量h」。我嘗試了快速修復,並指示我「將h轉換爲最終的一個元素數組」。這是什麼意思?爲什麼我應該「將myVariable轉換爲最終的一個元素數組」?

int Update() 
{ 
    final int h; 
    SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); 
    preferences.registerOnSharedPreferenceChangeListener(new SharedPreferences.OnSharedPreferenceChangeListener() { 


     @Override 
     public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) { 

      if(key.equalsIgnoreCase("PINCODE")) 
      { 
       h = sharedPreferences.getInt(key,0); 

      } 
     } 
    }); 

    return h; 
} 

}

+1

爲什麼在程序到達'return h'之前,你已經調用了監聽器(設置'h')?我在這裏看不到代碼中的邏輯。 – Tom

+0

[爲什麼lambda迫使我使用單個元素數組而不是最終對象?](https://stackoverflow.com/questions/28961578/why-lambda-forces-me-to-use-single-element-array -instead-的-最終對象) – DaveNOTDavid

回答

1

從你不能分配值的內部類局部變量(本身)宣佈某處封閉類,但你可以改變狀態(調用方法,制定者。 ..)的引用對象(如果變量指向某個對象而不是基本類型)。而數組是對象。

檢查Java語言規範 - 有關inner classes的部分。

相關問題