كيفية الحصول على قائمة كل سمات كائن جافا باستخدام BeanUtils التأمل?

StackOverflow https://stackoverflow.com/questions/1038308

سؤال

لدي الأسلوب الذي يحصل POJO كما انها المعلمة.الآن أريد أن برمجيا الحصول على جميع سمات POJO (لأن التعليمات البرمجية قد لا تعرف ما هي جميع السمات في ذلك في وقت التشغيل) و تحتاج إلى الحصول على قيم السمات أيضا.أخيرا سوف تشكل تمثيل سلسلة من POJO.

يمكنني استخدام ToStringBuilder, ولكن أريد بناء سلسلة الانتاج في صيغة معينة محددة إلى الشرط.

هل من الممكن أن تفعل ذلك في Beanutils !?إذا كانت اإلجابة نعم ، أي مؤشرات إلى الأسلوب الاسم ؟ إذا لا ينبغي أن أكتب بلدي انعكاس الرمز ؟

هل كانت مفيدة؟

المحلول

هل حاولت ReflectionToStringBuilder?يبدو هو أن تفعل ما تصفون.

نصائح أخرى

أعرف أن هذا هو العام السؤال القديم, ولكن أعتقد أنها يمكن أن تكون مفيدة للآخرين.

لقد وجدت حلا جزئيا باستخدام هذا الموضع

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 طريقة للحصول على قيمة هذا المتغير

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top