当对象不是数组类型时如何遍历对象
How to iterate through an object when it is not an array type
我的对象 LabOrder
包含无法使用数组索引定位的数据。我想要做的是打印对象中的非空值,如 name = John
。我如何遍历非空值并打印?
你应该使用反射。这将帮助您:
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);
}
您可以使用反射来迭代对象的字段:
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);
}
}
尝试以下:
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);
}
我的对象 LabOrder
包含无法使用数组索引定位的数据。我想要做的是打印对象中的非空值,如 name = John
。我如何遍历非空值并打印?
你应该使用反射。这将帮助您:
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);
}
您可以使用反射来迭代对象的字段:
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);
}
}
尝试以下:
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);
}