[resolvido]Pegar os valores dos campos de uma classe

7 respostas
cafezin

Dado uma classe qualquer… com campos já inicializados.

O método

getClass().getDeclaredFields()

me retorna um array de campos da classe.

Minha pergunta é…
É possível eu pegar os valores destes campos?

7 Respostas

rafaelviny

acredito que se vc colocar os campos do array em um objeto do mesmo tipo do campo e dar um getText() acho que sim

tenta fazer isso

nel
rafaelviny:
acredito que se vc colocar os campos do array em um objeto do mesmo tipo do campo e dar um getText() acho que sim

tenta fazer isso

Como pretende dar um getText() se for um tipo primitivo, por exemplo?!
Cafezin, segue a solução:

public class Teste2 {
	
	public void showValues() throws IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchFieldException {
		Teste te =  new Teste();
		Field[] fields = te.getClass().getDeclaredFields();
		for(int a=0; a < fields.length; a++) {
			System.out.println(fields[a].get(te));//Utiliza a instancia da classe para capturar o valor da variavél.
		}
		
	}
	
	public static void main(String[] args) throws Exception, IllegalAccessException {
		Teste2 t = new Teste2();
		t.showValues();
	}
}

Quando utilizar o método get a partir do seu field, passe como parametro a instancia da classe.
Abraços.

aluisiodsv

No caso vc vai estar trabalhando com a classe e não com o objeto. Creio q não seja possível.

edit: Pensando bem, passando o objeto como parâmetro dá certo sim … AUhuahuauhuahAUhuauh

nel

aluisiodsv:
No caso vc vai estar trabalhando com a classe e não com o objeto. Creio q não seja possível.

edit: Pensando bem, passando o objeto como parâmetro dá certo sim … AUhuahuauhuahAUhuauh

Haha!! Dá né?! :slight_smile:

rafaelviny

foi mal, é que eu fiz isso com um vetor de objetos, e levei apenas em consideração objetos e não variaveis

cafezin
nel:
rafaelviny:
acredito que se vc colocar os campos do array em um objeto do mesmo tipo do campo e dar um getText() acho que sim

tenta fazer isso

Como pretende dar um getText() se for um tipo primitivo, por exemplo?!
Cafezin, segue a solução:

public class Teste2 {
	
	public void showValues() throws IllegalArgumentException, IllegalAccessException, SecurityException, NoSuchFieldException {
		Teste te =  new Teste();
		Field[] fields = te.getClass().getDeclaredFields();
		for(int a=0; a < fields.length; a++) {
			System.out.println(fields[a].get(te));//Utiliza a instancia da classe para capturar o valor da variavél.
		}
		
	}
	
	public static void main(String[] args) throws Exception, IllegalAccessException {
		Teste2 t = new Teste2();
		t.showValues();
	}
}

Quando utilizar o método get a partir do seu field, passe como parametro a instancia da classe.
Abraços.

Colega,

Está perfeito! Exatamento isso.
Muito obrigado.

E obrigado pelos demais também.

nel

foi mal, é que eu fiz isso com um vetor de objetos, e levei apenas em consideração objetos e não variaveis

Que isso cara, fiz uma pergunta simples demonstrado que você poderia estar errado, assim como já postei várias vezes aqui estando equivocado.
Por isso gosto do GUJ, galera gente fina e compartilhando conhecimento!

Cafezim, nada cara!
Faça bom uso:)

Criado 18 de março de 2011
Ultima resposta 18 de mar. de 2011
Respostas 7
Participantes 4