Descobrir o nome de um metodo passado como parametro

5 respostas
D

E ai galera existe alguma forma de saber o nome metodo passado como parametro, por exemplo:

Pessoa p = new Pessoa();
p.setNome("Joao");

ObjetoQualquer obj = new ObjetoQualquer();

obj.setMetodo(p.getNome());

//nesse momento o obj.setMetodo, pegaria o getNome() com nome do metodo

5 Respostas

Marky.Vasconcelos

Impossivel.

O maximo que voce pode saber dentro do método é descobrir quem chamou ele, mas no seu caso, a unica coisa passada para o método é o valor da variavel e não a chamada do método.

tnaires

Uma abordagem alternativa seria passar os parâmetros para o método usando Maps, onde a chave é o nome do parâmetro.

rogelgarcia

Fazendo uns malabarismos muito loucos dá pra fazer… nao exatamente do jeito que vc passou… mas quase isso…

Essa biblioteca http://code.google.com/p/lambdaj/ faz…

É bem bacana…

Mas eu imagino que essa nao é a melhor solucao para seu problema

M

Davis, não entendi bem o que você quer, mas me parece que você quer que o seu “obj.setMetodo(Object o);” pegue o nome do método passado pelo parametro, mas da forma que você está fazendo não creio ser possível, porque quando você envia o método pronto, ele já vai enviar o valor que está na sua variável.
O que você precisa é usar reflection para fazer coisas deste tipo, mas não desta forma.
Você consegue pegar o valor do atributo se passar somente o nome do método (o que é ao contrário do que deseja fazer), por exemplo:

setMetodo(String nomeMetodo, Object instancia){
   //Para pegar o método
   Method metodo = instancia.getClass().getMethod(nomeMetodo, new Class[0]);

   //Para pegar o valor do método
   Object retorno = metodo.invoke(instancia, new Object[0]);
}

//Usando
public void exemplo(){
  Pessoa p = new Pessoa();  
  p.setNome("Joao");
  setMetodo("getNome", p);
}

Caso não seja exatamente isto que procura, desculpe-me. Explique de outra maneira que tento compreender.

Att,

Lucas Israel

T
davisnog:
E ai galera existe alguma forma de saber o nome metodo passado como parametro, por exemplo:
Pessoa p = new Pessoa();
p.setNome("Joao");

ObjetoQualquer obj = new ObjetoQualquer();

obj.setMetodo(p.getNome());

//nesse momento o obj.setMetodo, pegaria o getNome() com nome do metodo

Você não passou um nome de método como parâmetro.
Você passou um objeto que foi retornado por uma chamada a getNome.

Em Java ainda não é possível passar um nome de método como parâmetro; no Java 7 (ou 8 ) talvez seja possível uma coisa parecida, que é criar "lambdas". Isso ainda está em fase experimental, e pelo andar da carruagem não ficará pronto a tempo para o Java 7, a menos que atrasem mais ainda o seu lançamento.

Criado 16 de julho de 2010
Ultima resposta 16 de jul. de 2010
Respostas 5
Participantes 6