Pergunta

Eu tenho um DTO que tem um monte de membros. Fiquei me perguntando se Java apoia a ideia de um para o (in) para a classe. Eu não acho que ele faz, mas ele iria me salvar uma tonelada de pesar se ele fez, então, eu percebi que eu atirar a questão lá fora.

Foi útil?

Solução

Bem, você pode fazê-lo com a reflexão:

for (Field field : clazz.getFields())
{
    ...
}

(ou o equivalente para métodos etc.)

Você pode, então, obter os valores do campo para uma instância específica, ou valores estáticos.

Outras dicas

Ele faz, é um pouco de aborrecimento embora.

Você tem que usar a reflexão.

Veja: Class.getDeclaredFieds ()

Retorna uma matriz de objetos de campo que reflete todos os campos declarados pela classe ou interface representado por esse objeto Class

Você pode ver um exemplo aqui

Existem três formas de obtenção de um objeto de campo de um objeto da classe.

 Class cls = java.awt.Point.class;

 // By obtaining a list of all declared fields.
 Field[] fields = cls.getDeclaredFields();

 // By obtaining a list of all public fields, 
 // both declared and inherited.
 fields = cls.getFields();
 for (int i=0; i<fields.length; i++) {
   Class type = fields[i].getType();
   process(fields[i]);
 }

 // By obtaining a particular Field object.
 // This example retrieves java.awt.Point.x.
 try {
   Field field = cls.getField("x");
   process(field);
   } catch (NoSuchFieldException e) {
 }

Veja classe Classe definição para mais opções.

Sim, use o Reflection API . Particularmente, verificar os métodos getFields e getMethods de Class .

Você pode usar o reflexo para obter todos os membros e funções.

Talvez você precisa se perguntar por que DTO tem tantos membros que você acha que isto é necessário. Poderia ser tempo para refatorar.

Dê uma olhada no quadro reflexão através do qual você pode examinar a classe para obter essa informação.

http: / /java.sun.com/j2se/1.4.2/docs/api/java/lang/reflect/package-summary.html

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