为什么我无法从先前设置的单例数组中获取数据?

时间:2019-05-20 10:05:28

标签: java kotlin

我已经在单例中设置了JsonArray:

$(document).ready(function(){
/********/

let variable = $("#your_variable_id").val();

/*********/

});

然后我尝试从RV列表中删除该对象的项,但是由于该数组为空,因此无法获得该数组的任何值:

try {
            obj.addProperty("filename", name)
            obj.addProperty("data", data)
            oldArray.add(obj)

            sn.array = oldArray

            getImages()
        } catch (e: JsonIOException) {
            e.printStackTrace()
        }

我不明白为什么会发生以及如何解决这个问题。在单例中,我看到了该数据,但是当我尝试获取它时,我看到该数组完全为空。为什么会发生,我又做错了什么?也许我的jsonArray值在我的单身人士中有错误的字段:

Singleton sn = new Singleton();
JsonArray array = sn.getArray();

if (Objects.requireNonNull(array).size() > 0) {
}

希望这个问题比对我来说容易:)

1 个答案:

答案 0 :(得分:1)

单例的目的是您只有该类的一个实例。在您的情况下,您每次访问它都会创建一个单例类的新实例。显然,它为空。相反,您应该做的是这样的事情:

class Singleton {
    public static final Singleton INSTANCE = new Singleton();

    // The rest of its members
}

然后您通过以下方式访问它:

Singleton.INSTANCE

这样,您就只能拥有一个类的实例。当然,还有其他方法可以在Java中创建单例,这只是最简单的方法。

在Kotlin中,您可以简单地编写

object Singleton {
    // Singleton members
}