为什么我应该“将 myVariable 转换为最后一个元素数组”?

jaz*_*rty 7 java arrays variables android scope

我正在尝试访问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;
}
Run Code Online (Sandbox Code Playgroud)

}

man*_*cka 4

从内部类中,您不能将值分配给在封闭类中某处声明的局部变量(本身),但您可以更改引用对象的状态(调用方法、设置器等)(如果该变量指向某个对象)对象而不是原始类型)。数组是对象。

检查 Java 语言规范 - 有关内部类的部分。