java.lang.ClassCastException:[D不能强制转换为java.lang.Double

时间:2016-03-15 15:40:53

标签: java

我编写了以下代码,但无法将Object强制转换为Double。

Object[] args = new Object[3];
args[0]=Double.parseDouble(jTextField1.getText());
args[1]=Double.parseDouble(jTextField3.getText());
args[2]=Double.parseDouble(jTextField5.getText());
Object[] a = proxy.returningFeval("Combined", 1, args);
Double[] stra = new Double[a.length];
for(int i=0;i<a.length;i++){
    stra[i] = (Double)a[i];
    System.out.println("The value is :"+stra[i]);
}

2 个答案:

答案 0 :(得分:1)

目前尚不清楚a元素的实际类型是什么 - 我只能说它们中至少有一个是double[],而不是double或者Double

如果您希望a中的所有内容都为double[],则可以直接将演员表更改为

double[] straArr = (double[]) a[i];

然后使用

打印
System.out.println("The value is :"+Arrays.asString(straArr));

但是,如果元素是异构类型的,则需要使用instanceof个检查:

if (a[i] instanceof double[]) {
  // ...
} else {
  // Handle other types.
}

答案 1 :(得分:0)

通常,您可以在赋值行中中断执行,计算表达式(在您的情况下为:proxy.returningFeval("Combined", 1, args))并识别返回值的实际类型。