2017-07-08 42 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的部分。

相关问题