Как перебрать объект, если это не тип массива - PullRequest
0 голосов
/ 06 декабря 2018

Мой объект LabOrder содержит данные, которые невозможно найти по индексу массива.То, что я хочу сделать, это напечатать ненулевые значения в объекте, как name = John.Как я могу перебрать эти ненулевые значения и распечатать?

Ответы [ 3 ]

0 голосов
/ 06 декабря 2018

Вы можете использовать отражение для итерации по полям объекта:

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

for (Field field : fields) {
    field.setAccessible(true);
    String name = field.getName();
    Object value = field.get(obj1);
    if (value != null) {
        System.out.println(name + " = " + value);
    }
}
0 голосов
/ 06 декабря 2018

Попробуйте ниже:

import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;

LabOrder order = new LabOrder();// Instantiation of the bean.
LabOrder order = Introspector.getBeanInfo(LabOrder.class);
  for (PropertyDescriptor propertyDesc : order.getPropertyDescriptors()) {
      String propertyName = propertyDesc.getName();
      Object value = propertyDesc.getReadMethod().invoke(order);
      System.out.println(propertyName);
      System.out.println(value);
  }
0 голосов
/ 06 декабря 2018

Вы должны использовать отражение.Это поможет вам:

ClassABC abc = new ClassABC();
for (Field field : abc.getClass().getDeclaredFields()) {
    field.setAccessible(true);
    String name = field.getName();
    Object value = field.get(abc);
    System.out.printf("%s: %s%n", name, value);
}
...