2016-03-15 5 views
-1

Я написал следующий код и не смог передать Object в Double.java.lang.ClassCastException: [D не может быть отнесено к java.lang.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]); 
} 
+4

'[D' является' double [] ', а не' Double'. –

+1

Трудно вам помочь, когда мы не можем видеть, что делает proxy.returningFeval'. Пожалуйста, покажите [mcve]. –

+0

"не может передать объект [] в Double []" Нет - вы не можете использовать 'Object' для' Double'. –

ответ

1

Это не ясно, что фактические типы элементов a являются - все, что я могу сказать, что по крайней мере один из них является double[], а не double или Double.

Если вы ожидаете, все в a быть double[] s, вы можете просто изменить оттенок

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

, а затем распечатать с помощью

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

Однако, если элементы гетерогенно-набран, вам необходимо будет использовать instanceof чеки:

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

Спасибо :). Это сработало . @ Энди Тернер – User111111

0

В общем случае вы можете нарушить выполнение в строке с присвоением, оценить выражение (в вашем случае это: proxy.returningFeval("Combined", 1, args)) и распознать фактический тип возвращаемого значения.

Смежные вопросы