2011-07-11 83 views
0

行,所以如果我有這樣的方法:如何將對象轉換爲java中的double類型數組?

Object[] myTest(int[] a, double[] b){ 
    return new Object[]{a,b}; 
} 

現在,我怎麼把結果對象爲int [],然後雙擊[]?

就像如果我使用:

int[] array1 = (int[]) myTest(a,b)[0]; 
double[] array2 = (double[]) myTest(a,b)[1]; 

但是,這是行不通的。或者是否有任何有效的方法來完成這項工作?

+2

定義「不工作」 –

+4

這是非常糟糕的設計。你想做什麼? – SLaks

+0

@Martel,對不起,我錯了。 @SLaks,你爲什麼認爲這是糟糕的設計? – Johnydep

回答

1

不知道爲什麼你遇到困難:Java 6的這個按預期工作。

嘗試編譯這個類並運行它:

public class t1 
{ 
    public static void main(String[] args) throws Exception 
    { 
    int[] a = new int[1]; 
    double[] b = new double[1]; 

    int[] array1 = (int[]) myTest(a,b)[0]; 
    double[] array2 = (double[]) myTest(a,b)[1]; 
    System.err.println(array1); 
    System.err.println(array2); 
    } 

    static Object[] myTest(int[] a, double[] b){ 
    return new Object[]{a,b}; 
    } 
} 

它會打印出

[[email protected] 
[[email protected] 

這是自動裝箱發生,但仍然可以工作。

+0

爲什麼使用'System.err.println()'? –

+2

哈哈。更簡單的按鍵(我可以使用一個手指鍵入** err **,因爲* e *和* r *並排; ** out **包含2個手指)。 – Femi

+0

謝謝,它實際上是在工作。我不知道Eclipse的這個奇怪的問題,但現在它的'工作:))) – Johnydep

2

有一個包含int []和double []的WrapperObject。使用getters訪問它們。

​​

讓你的myTest方法返回該對象。

public WrapperObject myTest(int[] a , double[] b) { 
     return new WrapperObject(a, b); 
} 
+0

感謝您的詳細信息。我剛剛意識到我的方法也有效。我不知道爲什麼最初沒有。 – Johnydep

1

你可以使用一個包裝:

Integer[] array = (Integer[]) myTest() 
2

雖然你的代碼是工作的罰款和我在一起,但你可以做的另一種說法:

public static Object myTest(int[] a, double[] b, int index) 
{ 
    Object[] obj = {a,b}; 
    return obj[index]; 
} 

然後使用它像:

int[] array1 = (int[]) myTest(a,b,0); 
double[] array2 = (double[]) myTest(a,b,1); 
+0

是的,謝謝,我只是意識到它的工作原理。我不知道最初我嘗試過,但總是有這種類型的鑄造錯誤。 – Johnydep

相關問題