我试图访问内部类中的 h
变量,但错误不断出现“无法为最终变量 h
赋值”。我尝试了快速修复,它指示我“将 h 转换为最终一个元素数组”。这是什么意思?
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;
}
最佳答案
在内部类中,您不能将值赋给在封闭类中某处声明的局部变量(本身),但您可以更改类的状态(调用方法、setter 等)引用的对象(如果变量指向某个对象而不是原始类型)。数组是对象。
检查 Java 语言规范 - 关于 inner classes 的部分.
关于java - 为什么我应该 "Transform myVariable to final one element array"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990764/