代码名One-class[Ljava.lang.Object不能强制转换为class[Ljava.lang.Double;
我正在尝试解决如何在codename one中保存和加载。下面是我的代码的一个简单示例:代码名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) {
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);
}