我有方法,得到一个POJO,因为它的参数。 现在我想以编程方式获得POJO的所有属性(因为我的代码可能不知道什么都在它在运行时的属性),并需要获得值的属性也。 最后,我会形成POJO的字符串表示。
我可以用ToStringBuilder ,但我希望建立在某些特定格式的我的输出字符串我的要求。
是否有可能在BeanUtils的这样做!? 如果是的话,任何指针的方法叫什么名字? 如果没有,我应该写我自己的倒影代码?
我有方法,得到一个POJO,因为它的参数。 现在我想以编程方式获得POJO的所有属性(因为我的代码可能不知道什么都在它在运行时的属性),并需要获得值的属性也。 最后,我会形成POJO的字符串表示。
我可以用ToStringBuilder ,但我希望建立在某些特定格式的我的输出字符串我的要求。
是否有可能在BeanUtils的这样做!? 如果是的话,任何指针的方法叫什么名字? 如果没有,我应该写我自己的倒影代码?
您是否尝试过ReflectionToStringBuilder ? 这貌似是应该做你的描述。
我知道这是一岁多的问题,但我认为它可以成为有用的人。
我发现使用这个LOC的部分解决方案
Field [] attributes = MyBeanClass.class.getDeclaredFields();
这是一个工作示例:
import java.lang.reflect.Field;
import org.apache.commons.beanutils.PropertyUtils;
public class ObjectWithSomeProperties {
private String firstProperty;
private String secondProperty;
public String getFirstProperty() {
return firstProperty;
}
public void setFirstProperty(String firstProperty) {
this.firstProperty = firstProperty;
}
public String getSecondProperty() {
return secondProperty;
}
public void setSecondProperty(String secondProperty) {
this.secondProperty = secondProperty;
}
public static void main(String[] args) {
ObjectWithSomeProperties object = new ObjectWithSomeProperties();
// Load all fields in the class (private included)
Field [] attributes = object.getClass().getDeclaredFields();
for (Field field : attributes) {
// Dynamically read Attribute Name
System.out.println("ATTRIBUTE NAME: " + field.getName());
try {
// Dynamically set Attribute Value
PropertyUtils.setSimpleProperty(object, field.getName(), "A VALUE");
System.out.println("ATTRIBUTE VALUE: " + PropertyUtils.getSimpleProperty(object, field.getName()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
使用反射获得所有属性/变量(只是名称)。 现在使用的getProperty方法来获取变量的值