代码名One-class[Ljava.lang.Object不能强制转换为class[Ljava.lang.Double;

代码名One-class[Ljava.lang.Object不能强制转换为class[Ljava.lang.Double;,java,codenameone,Java,Codenameone,我正在尝试解决如何在codename one中保存和加载。下面是我的代码的一个简单示例: public class Calcuator { Double[] regValues; public Calcuator() { this.regValues = (Double[])Storage.getInstance().readObject("regValueStack"); if (this.regValues == null) {

我正在尝试解决如何在codename one中保存和加载。下面是我的代码的一个简单示例:

public class Calcuator {

Double[] regValues;

public Calcuator() {
    this.regValues = (Double[])Storage.getInstance().readObject("regValueStack");
    if (this.regValues == null) {
            this.regValues = new Double[]{0.0, 0.0, 0.0, 0.0, 0.0};
    }

}
这就是我写记忆的方式:

/// some code that edited the array in the 'myCalculator' instance of Calculator class
Storage.getInstance().writeObject("regValueStack", myCalculator.regValues);
当我的数组为空并且我手动初始化它时,这就起作用了。但是,在将它写入内存一次之后,每当我尝试在构造函数中读取它时,我都会遇到以下错误:

class [Ljava.lang.Object; cannot be cast to class [Ljava.lang.Double;

您能帮助我理解并解决此问题吗?

存储序列化仅支持对象数组。由于缺少反射,我们无法动态创建
数组。因此,当您编写
双[]
时,它将作为
对象[]
返回

原语数组有一个特殊情况,因此
double[]
可能会按预期工作

或者,您可以只执行以下操作:

Object[]temp=Storage.getInstance().readObject(“regValueStack”);
如果(温度!=null){
this.regValues=新的双精度[温度长度];
System.copyarray(temp,0,temp.length,this.regValues,0);
}

存储序列化仅支持对象数组。由于缺少反射,我们无法动态创建
数组。因此,当您编写
双[]
时,它将作为
对象[]
返回

原语数组有一个特殊情况,因此
double[]
可能会按预期工作

或者,您可以只执行以下操作:

Object[]temp=Storage.getInstance().readObject(“regValueStack”);
如果(温度!=null){
this.regValues=新的双精度[温度长度];
System.copyarray(temp,0,temp.length,this.regValues,0);
}