Question

J'ai une méthode qui obtient un POJO comme paramètre. Maintenant, je souhaite obtenir par programme tous les attributs du POJO (car mon code peut ne pas savoir quels sont tous les attributs qu'il contient au moment de l'exécution) et j'ai également besoin d'obtenir les valeurs pour les attributs. Enfin, je vais former une représentation sous forme de chaîne du POJO.

Je pourrais utiliser ToStringBuilder , mais je veux construire ma chaîne de sortie dans un format spécifique à mon exigence.

Est-il possible de le faire à Beanutils!? Si oui, des pointeurs sur le nom de la méthode? Si non, devrais-je écrire mon propre code de réflexion?

Était-ce utile?

La solution

Avez-vous essayé ReflectionToStringBuilder ? Il semble que vous devriez faire ce que vous décrivez.

Autres conseils

Je sais que cette question remonte à un an, mais je pense que cela peut être utile pour les autres.

J'ai trouvé une solution partielle en utilisant ce LOC

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

Voici un exemple de travail:

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

        }
    }
}

obtenir toutes les propriétés / variables (juste le nom) en utilisant la réflexion. Maintenant, utilisez getProperty , méthode pour obtenir la valeur de cette variable

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top