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
[code]
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;
}
}[/code]
Eu sei que existe o getDeclaredMethods(). Então estou tentando algo do tipo
[code]public static void main(String []args) {
for (Method method : MinhaClasse.class.getDeclaredMethods()) {
// gostaria de usar todos os metodos getters aqui.
}
}[/code]
Obrigado pela ajuda
Antes de responder, qual a razão para isto?
Então, sim, é possível fazer isto sim.
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.
Pra trabalhar com Reflection tem também a Mirror DSL:
http://projetos.vidageek.net/mirror/
Abraços.
[quote=drsmachado]Antes de responder, qual a razão para isto?
Então, sim, é possível fazer isto sim.[/quote]
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
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…
[quote=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…[/quote]
Também aconselharia a classe Method…quando precisei de algo semelhante ela tinha todos os recursos que eu precisava…
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!