Как привести объект к массиву двойного типа в Java? - PullRequest
0 голосов
/ 12 июля 2011

ОК, а что, если у меня есть такой метод:

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 ]

2 голосов
/ 12 июля 2011

Хотя ваш код работает нормально со мной, но вы могли бы сделать это по-другому:

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 голосов
/ 12 июля 2011

Иметь объект WrapperObject, который содержит int [] и double [].Используйте методы получения доступа к ним.

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 голос
/ 12 июля 2011

Не знаю, почему у вас возникли трудности: на 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

Это происходит автобокс, но все равно будет работать.

1 голос
/ 12 июля 2011

Вы можете использовать оболочку:

Integer[] array = (Integer[]) myTest()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...