Frage

Ich habe eine Methode, die POJO bekommt, wie es Parameter ist. Jetzt möchte ich programmatisch alle Attribute des POJO bekommen (weil mein Code kann nicht wissen, was in ihm während der Laufzeit alle Attribute sind) und müssen auch die Werte für die Attribute zu erhalten. Schließlich werde ich eine String-Darstellung des POJO bilden.

könnte ich ToStringBuilder , aber ich möchte, dass meine Ausgabe-String in bestimmten Format spezifisch für meine Anforderung bauen.

Ist es möglich, so in Beanutils zu tun!? Wenn ja, alle Hinweise auf den Methodennamen? Wenn nein, soll ich mein eigenes Spiegelbild Code schreiben?

War es hilfreich?

Lösung

Haben Sie versucht, ReflectionToStringBuilder ? Es sieht aus wie wird, sollte das tun, was Sie beschreiben.

Andere Tipps

Ich weiß, das ist ein Jahr alte Frage, aber ich denke, es kann für andere nützlich sein.

Ich habe eine Teillösung unter Verwendung dieses LOC gefunden

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

Hier ist ein funktionierendes Beispiel:

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();
            }

        }
    }
}

erhalten alle Eigenschaften / Variablen (nur der Name) mit Reflexion. Verwenden Sie nun getProperty Methode den Wert dieser variablen zu erhalten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top