Pergunta

Eu tenho método que recebe um POJO como parâmetro a sua. Agora eu quero obter programaticamente todos os atributos do POJO (porque meu código não pode saber quais são todos os atributos em que em tempo de execução) e necessidade de obter os valores para o também atribui. Finalmente eu vou formar uma representação de string do POJO.

Eu poderia usar ToStringBuilder , mas eu quero construir a minha string de saída em determinado formato específico para a minha obrigação.

É possível fazê-lo em BeanUtils!? Se sim, qualquer ponteiros para o nome do método? Se não, eu devo escrever meu próprio código reflexão?

Foi útil?

Solução

Você já tentou ReflectionToStringBuilder ? Parece que é que deve fazer o que você descreve.

Outras dicas

Eu sei que isto é uma questão anos de idade, mas eu acho que pode ser útil para os outros.

Eu encontrei uma solução parcial usando este LOC

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

Aqui está um exemplo de trabalho:

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

        }
    }
}

obter todas as propriedades / variáveis ??(apenas o nome) usando a reflexão. Agora use método getProperty para obter o valor dessa variável

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top