Extrair dados de objeto

3 respostas
knik

E aí pessoal,
como faço para iterar um objeto, extraindo os seus dados, quando não conhecemos a sua extrutura?

Por exemplo:

Para extrair os dados de um objeto pessoa, é claro, instancio o objeto e pégo os atributos pelos métodos get (getNome, getIdade, etc).

E se eu não conhecer o objeto, isto é, o resultado de uma consulta qualquer foi colocado dentro de um Object?. Daí, esta consulta poderia ser uma array de object, como no exemplo hipotético abaixo:

List<Object> lista = new ArrayList<Object>(); lista = dao.list()

e agora, como iterar esta lista?

eu poderia fazer assim:

for(Object objeto : lista){ system.out.println(objeto); }

como vêem, o objeto é “capturado” e ele é impresso, mas apenas o seu hash.
Como fazer para imprimir os atributos existentes dentro deste objeto?

Este é um bom desafio, coisas que poucos usam, mas por que não sabem usar!
Alguém se habilita?

3 Respostas

T

http://commons.apache.org/beanutils/

S

Não sei bem o qe você quer se é reflection ou se uma reimplementação do toString nas classes que podem ser iteradas resolveria. Favor descrever qual das duas você está se referindo.

erdanielli

O jeito mais simples seria implementar o método toString(), pois é ele que está sendo invocado no println(). Caso vc esteja utilizando objetos de terceiros, ou é preguiçoso mesmo e não gosta de ficar implementando toString(), no apache commons-lang tem a classe ReflectionToStringBuilder que faz isso automaticamente (via reflexão)

import org.apache.commons.lang.builder.ReflectionToStringBuilder; ... System.out.println("objeto: " + ReflectionToStringBuilder.toString(anObject));

Criado 31 de março de 2009
Ultima resposta 31 de mar. de 2009
Respostas 3
Participantes 4