Pegar todos os getters de uma classe

8 respostas
cafezin

Bom dia Pessoal,

Será que é possível eu percorrer todos os métodos getters de uma classe e então usá-los?
Segue um exemplo

public class MinhaClasse {

	private String atributo1;
	private String atributo2;
	private String atributo3;

	public String getAtributo1() {
		return atributo1;
	}

	public void setAtributo1(String atributo1) {
		this.atributo1 = atributo1;
	}

	public String getAtributo2() {
		return atributo2;
	}

	public void setAtributo2(String atributo2) {
		this.atributo2 = atributo2;
	}

	public String getAtributo3() {
		return atributo3;
	}

	public void setAtributo3(String atributo3) {
		this.atributo3 = atributo3;
	}
}
Eu sei que existe o getDeclaredMethods(). Então estou tentando algo do tipo
public static void main(String []args) {
		
		for (Method method : MinhaClasse.class.getDeclaredMethods()) {
           // gostaria de usar todos os metodos getters aqui.
		}

	}
Obrigado pela ajuda

8 Respostas

drsmachado

Antes de responder, qual a razão para isto?

Então, sim, é possível fazer isto sim.

jyoshiriro

Já experimentou a biblioteca Apache Commons BeanUtils?
http://commons.apache.org/beanutils/

Não ficou bem claro o que você quer mas imagino que essa biblioteca possa te ajudar. Ela deixa transparente muita coisa que daria trabalho via Reflection do Java.

lgi2020

Pra trabalhar com Reflection tem também a Mirror DSL:
http://projetos.vidageek.net/mirror/

Abraços.

cafezin

drsmachado:
Antes de responder, qual a razão para isto?

Então, sim, é possível fazer isto sim.

drsmachado

É o seguinte, é criado dinamicamente na aplicacao alguns objetos, onde todos os atributos são do tipo String. (Ex: MinhaClasse.class)
Eu gostaria de pegar esses objetos e transforma-los em outros com uma estrutura especifica. E para que essa transformacao ocorra só preciso pegar o retorno dos metodos getters.
Já consigo filtrar só os getters, só preciso invoca-los e usar seus respectivos retornos(que serão sempre String por sinal).

Peço desculpas se ainda não fui muito claro.

Saudações

jyoshiriro

Então realmente acho que o Commons BeanUtils te ajudará:

http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/BeanUtils.html (acho que está aqui tua solução)
http://commons.apache.org/beanutils/commons-beanutils-1.7.0/docs/api/org/apache/commons/beanutils/BeanUtilsBean.html

rogelgarcia

Tá faltando só dar uma lidinha nos métodos da classe Method… que seu problema tá resolvido…

Uma dica: Você deve “invocar” o método…

leoviniga

rogelgarcia:
Tá faltando só dar uma lidinha nos métodos da classe Method… que seu problema tá resolvido…

Uma dica: Você deve “invocar” o método…


Também aconselharia a classe Method…quando precisei de algo semelhante ela tinha todos os recursos que eu precisava…

cafezin

Pois é rogelgarcia.

Eu tinha encontrado o metodo, mas nao tinha entendido como usa-lo. Mas deu certo já.

O que precisa ficar claro, se mais alguém tiver essa dúvida é o seguinte.

MinhaClasse.class.getDeclaredMethods() só diz respeito a classe mesmo. (Tudo bem, é óbvio mas nao tinha me dado conta)
E, para invocar basta chamar o metodo invoke(Object obj, Object[] args)
Onde o “obj” é o objeto que foi instanciado a partir desta classe e o args sao os parametros que o metodo precisa

Obrigado a todos e tenham um bom dia!

Criado 26 de maio de 2011
Ultima resposta 26 de mai. de 2011
Respostas 8
Participantes 6