【问题标题】:Why should I "Transform myVariable to final one element array"?为什么我应该“将 myVariable 转换为最终的一个元素数组”?
【发布时间】:2021-12-19 00:36:33
【问题描述】:

我正在尝试访问内部类中的 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;
}

}

【问题讨论】:

标签: java android arrays variables scope


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    该变量必须在 MainActivity 类中分配为静态变量。

    static int h;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-18
      • 2013-10-16
      • 2023-02-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多