2011-07-11 85 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

相关问题