Java проходит через поле массива без создания нового экземпляра

1

Я пытаюсь написать метод, который получает Object и выполняет некоторую логику с полями объектов.

Мой метод выглядит так:

public void exampleCast(Object obj) {
    Field[] fields = obj.getClass().getFields();
    for (Field field : fields) {                    
        if (field.getClass().isArray()) {

        /*
            HOW CAN I GO OVER THE ARRAY FIELDS , WITHOUT CREATING NEW INSATCNE ?
            SOMETHING LIKE:
            for (int i = 0; i < array.length; i++) {
               array[i] ...
            }

        */  
        } else {
            ...
            ...
        }
    }
}   

И пример для объектов:

class TBD1 {
 public int x;
 public int y;
 public int[] arrInt = new int[10];
 public byte[] arrByte = new byte[10];
}

И позвоните по моему методу:

TBD1 tbd1 = new TBD1();
exampleCast(tbd1);

В моем mehod я не знаю, как я могу получить значения массива без создания нового экземпляра (используя метод "newInstance"). Возможно ли это? (см. комментарий, который я написал в моем примере)

Я прочитал эти 2 веб-сайта: http://jroller.com/eyallupu/entry/two_side_notes_about_arrays

http://tutorials.jenkov.com/java-reflection/arrays.html

Но не получил то, что я хочу.

Пожалуйста, помогите :) Спасибо

Теги:
reflection

1 ответ

3
Лучший ответ

Если я понимаю ваш вопрос, вы можете использовать java.lang.reflect.Array и что-то вроде

if (field.getType().isArray()) { // <-- should be getType(), thx @Pshemo
    Object array = field.get(obj);
    int len = Array.getLength(array);
    for (int i = 0; i < len; i++) {
        Object v = Array.get(array, i);
        System.out.println(v);
    }
} // ...
  • 1
    getType это не должно быть getType вместо getClass ? Если я не ошибаюсь, getClass вызванный для экземпляра Field , вернет нам Field.class который определенно не является массивом. Мы хотим проверить, является ли тип переменной массивом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню