Reflexao - Chamada de metodo set com int e Integer
7 respostas
F
fellipaum
Bom dia,
estou com um problema na chamade de um metodo set via reflaxão.
Na classe ele esta definido como “setNumItens(Integer x)”, recebendo o objeto Integer.
Quando vou fazer a chamada do metodo via reflexao ele da erro pq no getMethod eu passo o class do int(Integer.TYPE). Para tentei tratar esse tipo de erro, eu passo o class do proprio Integer, so que ele continua printando a mesma excessao.
int.class - é a “classe” do tipo primitivo int.
Integer.class - é a classe do tipo objeto java.lang.Integer.
Satisfeito?
Isso eu sei.
O que estou querendo saber eh pq mesmo passando o “Integer.class” no getMethod ele continua dizendo que o metodo nao existe? Sendo que o method existe.
Note que o método eco recebe um Integer, devolve como int, que depois é transformado em Object (na saída do invoke()) e, mesmo assim, tudo ocorre bem. O que eu acho mais provável que tenha acontecido é que você tenha errado algum parâmetro do método..
[]´s
F
fellipaum
asaudate:
O que eu acho mais provável que tenha acontecido é que você tenha errado algum parâmetro do método…
Resolvido o problema, foi erro na minha codificação.
Antes eu estava lançando a exceçao dentro do catch independe das invocações dentro dos ifs e elses que estavam dentro do catch, por isso que estava sempre lançando exceção.
Por isso que estava sempre printando o:
“java.lang.NoSuchMethodException: Legislacao.setNumItens(int)”
Foi mal ae.
Eu sei disso, so q se vc olhar no catch do codigo que eu postei, eu estava invocando o mesmo metodo passando Integer.class(dentro do catch),
try{
method=tObj2.getClass().getMethod("set"+name,editItem.getClazz());//Esse "editItem.getClazz()" passa o Integer.TYPE
}catch(NoSuchMethodExceptione){
if(editItem.getValue()instanceofInteger){//O"editItem.getValue()"ehoatributoqueeuvoupassarcomoparametronosetmethod=tObj2.getClass().getMethod("set"+name,Integer.class);//Chamando o mesmo metodo passando Integer.class}
e ainda sim tava dando exceção(so que era erro na minha logica).
Vlw pelas ajudas.