[RESOLVIDO] Problema ao tentar obter todos os atributos de um objeto

1 resposta
movivan

Bom dia pessoal!

Estou tentando obter todos os atributos de um objeto e de suas superclasses, através uma função recursiva, mas já na segunda chamada ela cai diretamente em Class e encerra a recursão, não trazendo o resultado esperado.
Alguém teria alguma sugestão de como contornar este problema ou então outra maneira para obter todos os atributos?
Segue abaixo o código da função.

private static Collection<Field> getAtributos(Object obj) {
		System.out.println(obj.getClass().getSimpleName());
		Collection<Field> atributos = new ArrayList<Field>();
		
		Field[] atrib = obj.getClass().getDeclaredFields();
		atributos.addAll( Arrays.asList(atrib) );
		
		if (!obj.getClass().getSuperclass().equals(Object.class)) {
			atributos.addAll( getAtributos( obj.getClass().getSuperclass() ) );
		}
		
		return atributos;
	}

Um grande abraço à todos e obrigado pela atenção!

1 Resposta

movivan

Segue abaixo o código com a alteração que resolve o tal problema.

private static Collection<Field> getAtributos(Class obj) {
		System.out.println(obj.getSimpleName());
		Collection<Field> atributos = new ArrayList<Field>();
		
		Field[] atrib = obj.getDeclaredFields();
		atributos.addAll( Arrays.asList(atrib) );
		
		if (!obj.getSuperclass().equals(Object.class)) {
			atributos.addAll( getAtributos( obj.getSuperclass() ) );
		}
		
		return atributos;
	}
Criado 17 de dezembro de 2007
Ultima resposta 17 de dez. de 2007
Respostas 1
Participantes 1