如何在java中将对象转换为double类型数组?

时间:2011-07-11 21:37:46

标签: java arrays object hashmap

好的,如果我的方法如下:

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

现在我如何将结果Object转换为int []和double []?

如果我使用:

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

但这不起作用。或者有没有有效的方法来完成这项工作?

4 个答案:

答案 0 :(得分:2)

有一个包含int []和double []的WrapperObject。使用getter访问它们。

public class WrapperObject {

     private int[] a;
     private double[] b;

     public void setA(int[] a1) {
         a = a1;
     }

     public int[] getA() {
         return a;
     }
    .....
}

让你的myTest方法返回该对象。

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

答案 1 :(得分: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);

答案 2 :(得分:1)

您可以使用包装器:

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

答案 3 :(得分: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};
    }
}

它会打印出来

[I@3e25a5
[D@19821f

这是自动装箱,但仍然有效。