How to get the list of all attributes of a Java object using BeanUtils introspection?

前端 未结 3 2199
陌清茗
陌清茗 2020-12-06 05:41

I have method which gets a POJO as it\'s parameter. Now I want to programmatically get all the attributes of the POJO (because my code may not know what are all the attribut

相关标签:
3条回答
  • 2020-12-06 05:58

    Have you tried ReflectionToStringBuilder? It looks like is should do what you describe.

    0 讨论(0)
  • 2020-12-06 06:04

    I know this is a year old question, but I think it can be useful for others.

    I have found a partial solution using this LOC

    Field [] attributes =  MyBeanClass.class.getDeclaredFields();
    

    Here is a working example:

    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();
                }
    
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-06 06:22

    get all properties/variables ( just the name ) using reflection. Now use getProperty method to get the value of that variable

    0 讨论(0)
提交回复
热议问题