好的,如果我的方法如下:
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];
但这不起作用。或者有没有有效的方法来完成这项工作?
答案 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
这是自动装箱,但仍然有效。