gpt4 book ai didi

java - 如何使用 BeanUtils 自省(introspection)获取 Java 对象的所有属性列表?

转载 作者:搜寻专家 更新时间:2023-10-30 19:51:52 25 4
gpt4 key购买 nike

我有一个获取 POJO 作为参数的方法。现在我想以编程方式获取 POJO 的所有属性(因为我的代码在运行时可能不知道其中的所有属性是什么)并且还需要获取属性的值。最后,我将形成 POJO 的字符串表示形式。

我可以使用 ToStringBuilder ,但我想以特定于我的要求的特定格式构建我的输出字符串。

是否可以在 Beanutils 中这样做!?如果是,是否有任何指向方法名称的指针?如果不是,我是否应该编写自己的反射代码?

最佳答案

我知道这是一个古老的问题,但我认为它对其他人有用。

我找到了使用此 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();
}

}
}
}

关于java - 如何使用 BeanUtils 自省(introspection)获取 Java 对象的所有属性列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1038308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com