Reflexao - Chamada de metodo set com int e Integer

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.

java.lang.NoSuchMethodException: Legislacao.setNumItens(int)
at java.lang.Class.getMethod(Class.java:1605)
at util.EditArtefato.callSet(EditArtefato.java:156)
at util.EditArtefato.saveMethods(EditArtefato.java:118)
at util.EditArtefato.main(EditArtefato.java:213)

Segue o codigo:

Method method = null;
	
		try{
			method = tObj2.getClass().getMethod("set"+name, editItem.getClazz());
		}catch (NoSuchMethodException e) {
			if(editItem.getValue() instanceof Integer){
				method = tObj2.getClass().getMethod("set"+name, Integer.class);
			}else if(editItem.getValue() instanceof Float){
				method = tObj2.getClass().getMethod("set"+name, Float.class);
			}else if(editItem.getValue() instanceof Long){
				method = tObj2.getClass().getMethod("set"+name, Long.class);
			}
			throw e;
		}
		if(method != null){
			method.setAccessible(true);
			method.invoke(tObj2, editItem.getValue());
		}

Alguem sabe uma solução que nao seja alterar o set pra receber um int??
Obs: essa chamada funciona normal se o metodo receber um int.

Não entendi sua duvida.

Poste a classe de modelo que voce quer pegar o método.

int.class - é a “classe” do tipo primitivo int.
Integer.class - é a classe do tipo objeto java.lang.Integer.

Satisfeito?

[quote]Não entendi sua duvida.

Poste a classe de modelo que voce quer pegar o método.[/quote]
Esse eh o metodo que estou querendo invocar:

public void setNumItens(Integer value) {
    this.numItens = value;
}

[quote=entanglement]int.class - é a “classe” do tipo primitivo int.
Integer.class - é a classe do tipo objeto java.lang.Integer.

Satisfeito?
[/quote]
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.

Posso estar viajando, mas esta linha aqui :

“java.lang.NoSuchMethodException: Legislacao.setNumItens(int)”

Está afirmando, que você está passando int.class como parameter type, quando seu método tem como parameter type um Integer.

Integer.TYPE retorna o class do tipo primitivo int
Integer.class retorna o class de Integer

Como, no meio de tanta confusão, não está bem claro o que você quer, segue exemplo de invocação de método com integer:

[code]public class Main2 {

public static void main(String[] args) throws Exception{
	Method m = Main2.class.getMethod("eco", Integer.class);
	
	Main2 instance = new Main2();
	
	Object resultado = m.invoke(instance, new Integer("2"));
	System.out.println(resultado);

}


public int eco (Integer parametro) {
	return parametro;
}

}
[/code]

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

[quote=asaudate]O que eu acho mais provável que tenha acontecido é que você tenha errado algum parâmetro do método…
[/quote]
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 (NoSuchMethodException e) {
	if(editItem.getValue() instanceof Integer){//O "editItem.getValue()" eh o atributo que eu vou passar como parametro no set
		method = 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.