Java Reflection isArray () всегда false

Я получил вопрос о Java Reflections: мне нужно проверить, если определенное поле класса является массивом. Но моя проблема: если я запускаю isArray () в атрибуте класса напрямую, он работает. Но если я использую его ниже, он не будет работать. Думаю, потому что «настоящий» массив находится в этом классе Field? Любая идея, как я могу заставить его работать - я думаю, что отсутствует листинг или sth, как это ? Благодаря!

Field fields[] = object.getClass().getDeclaredFields();

for (Field field : fields) {
    if (field.getClass().isArray()) {
        //Always false.
    }
}

java,arrays,reflection,

0

Ответов: 3


7 принят

field.getType()!


4

Ваш код должен читать

Field fields[] = obj.getClass().getDeclaredFields();

for(Field field : fields) {
  if(field.getType().isArray()){
     //Actually works
  }
}

Использование field.getClass (), поскольку вы всегда будете возвращать Field.class или экземпляр класса подкласса поля *.

* Приносим извинения за такое смехотворно сформулированное предложение.


0

Вы проверяете отдельные элементы полей, а не сам массив.

Java, массивы, отражение,
Похожие вопросы