Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java ME (J2ME) > Массив как объект


Автор: Vilux 7.4.2006, 11:33
У меня следующая проблема. Я конвертирую int[][] a в Object, так вот как мне потом узнать размерность массива и получить доступ к его элементам? Заранее спасибо

Автор: powerOn 7.4.2006, 12:03
Может быть так:
Код

        int i[][] = new int[10][10];
        i[1][1] = 1234;
        Object o = i;
        int i1 [] [] = (int [][]) o;
        //System.out.println("" + i1[1][1]);

Автор: Vilux 7.4.2006, 13:00
Так, конечно, сработает. Но мне надо универсальный метод, когда я не знаю размерность массива. А в вашем коде сразу известно, что массив двухмерный.
В Java это реализуется с помощью методов Array, а тут похоже нет smile

Автор: javastic 10.4.2006, 10:59
Может быть можно что-то сделать с такой конструкцией:

Код

Object array(int[] a) {
  return (Object)a;
}

Object array(int[][] a) {
  return (Object)a;
}



Автор: Vilux 10.4.2006, 11:01
Ну я же написал, что надо универсальный метод, а если массив размерностью 100?

Автор: javastic 10.4.2006, 11:16
Попробуй описать задачу, может так будет понятней что ты хочешь.

Автор: redrick 10.4.2006, 15:50
может попробовать перебором? Типа:

Код

boolean found = false;
try{
    int[] a = (int[])o;
    found = true;
} catch(Exception ex) {
   found = false;
}

try{
    int[][] a = (int[][])o;
    found = true;
} catch(Exception ex) {
   found = false;
}
...

Автор: LSD 10.4.2006, 16:25
Цитата(Vilux @ 10.4.2006, 12:01 Найти цитируемый пост)
Ну я же написал, что надо универсальный метод, а если массив размерностью 100?

Работать с массивом произвольной размерности, можно только через рефлексию. Если ее в J2ME нет, то ничего тут не сделаешь.
А получить размернось массива можно так:
Код
public static int getDimensions(Object obj)
{
  int dim = 0;
  Class clazz = obj.getClass();
  while(clazz.isArray())
  {
    dim++;
    clazz = clazz.getComponentType();
  }
  return dim;
}

Автор: Dancer 10.4.2006, 16:37
smile всё бы хорошо, но нету в J2ME getComponentType()
Добавлено @ 16:40
Оборачивай всё это дело в свой собтвенный класс, в котором будешь объявлять размерность массива и создавать этот массив для последующей работы с ним.
Другого варианта пока не вижу.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)