java - 为什么我应该 "Transform myVariable to final one element array"?

标签 java android arrays variables 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;
}

最佳答案

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

检查 Java 语言规范 - 关于 inner classes 的部分.

关于java - 为什么我应该 "Transform myVariable to final one element array"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44990764/

相关文章:

c# - C#使用唯一的整数填充数组No Linq或ArrayLists;

c - 如何将一维数组插入到函数中

php - Elasticsearch:为PHP数组中的多个匹配设置参数

java - 如何在 Java 中将 TCP 发送按钮放入循环中?

java字符串全部替换

android - 是否可以确定键盘振动是否打开?

android - 我如何给这个 PictureDrawable 着色?

java - Java POJO 中的字段、变量、属性和属性有什么区别?

java - 在 Apache Camel 中访问拆分 entrySet 的主体

Android:抽屉导航和 ActionBar Compat