Java 为什么我不能从我之前设置的单例数组中获取数据?

Java 为什么我不能从我之前设置的单例数组中获取数据?,java,kotlin,Java,Kotlin,我已将JsonArray设置为我的singleton: try { obj.addProperty("filename", name) obj.addProperty("data", data) oldArray.add(obj) sn.array = oldArray getImages() } catch (e: JsonIOException) {

我已将JsonArray设置为我的singleton:

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

            sn.array = oldArray

            getImages()
        } catch (e: JsonIOException) {
            e.printStackTrace()
        }
var array:JsonArray? = JsonArray()
然后我尝试从RV列表中删除此对象的项,但无法获取此数组的任何值,因为它为空:

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

if (Objects.requireNonNull(array).size() > 0) {
}
我不明白为什么会发生这种情况以及我是如何解决这个问题的。在singleton,我看到了这些数据,但当我试图获取这些数据时,我发现数组是完全空的。为什么会这样?我又做错了什么?可能我的jsonArray值在我的单例中有错误的字段:

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

            sn.array = oldArray

            getImages()
        } catch (e: JsonIOException) {
            e.printStackTrace()
        }
var array:JsonArray? = JsonArray()

希望问题比我想象的要简单:

单例的目的是您只有一个类的实例。在本例中,每次访问singleton类时都会创建一个新的实例。显然,它是空的。你应该做的是做如下的事情:

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

    // The rest of its members
}
然后您可以通过以下方式访问:

Singleton.INSTANCE
这样,您的类只有一个实例。当然,在Java中还有其他方法来创建单例,这只是最简单的一种

在科特林,你可以写得很简单

object Singleton {
    // Singleton members
}

显示整个singleton整个singleton太大了,包含了很多对你来说无用的信息,也许你会说我必须在这个singleton上显示什么?你在什么步骤填充数组?在我的问题中尝试捕获是的,但它是在某种函数或构造函数中?如果你写singleton sn=new singleton;,我在我的应用程序中有singleton;,您肯定没有单例。您能为基于kotlin的单例提供实例值吗?您是用kotlin还是用Java编写的?您发布的代码是Java。在Kotlin中,内置了对Singleton对象的支持。您可以在文档中查找它。singleton在kotlin中,java代码来自rv的适配器,但现在我已经转到kotlin