Reflection

2 respostas
nandobgi

Boa tarde Pessoal,

Estou tendo meu primeiro contato com Reflection e gostaria de ajuda de vcs.
Bem estou tentando invocar um método set de um VO.

VO.

public class Fornecedor  {
		
   private Long codigo_fornecedor;

               public Fornecedor() {}

	public Long getCodigo_fornecedor() {
		return codigo_fornecedor;
	}

	public void setCodigo_fornecedor(Long codigo_fornecedor) {
		this.codigo_fornecedor = codigo_fornecedor;
	}

Estou tentando invocar o método setCodigo_fornecedor(Long codigo_fornecedor)

String setName = "setCodigo_fornecedor";

		Class<?> partypes[] = new Class[1];
		partypes[0] = Long.TYPE;

		Object arglist[] = new Object[1];
		arglist[0] =  new Long(15);

		
		try {
			Class<?> c = Class.forName(sensatta.modelo.Fornecedor);
			
                                                Fornecedor obj = new Fornecedor();
			Method meth = c.getMethod(setName , partypes );
			Object retobj = meth.invoke(obj, arglist );
				


		} catch (Exception e) {
			e.printStackTrace();
		}

	}

Porém recebo o seguinte erro

java.lang.NoSuchMethodException: sensatta.modelo.Fornecedor.setCodigo_fornecedor(long)

Verifiquei o nome do método e esta correto, o que mais poderia ser?

Obrigado.

2 Respostas

T

Troque isto:

Class<?> partypes[] = new Class[1];  
partypes[0] = Long.TYPE;

por isto (use Long.class, não Long.TYPE):

Class<?> partypes[] = {
    Long.class
};
T

Long.TYPE é a classe que representa o tipo do primitivo “long”, não a classe de java.lang.Long (que deve ser obtida via Long.class).

Criado 30 de outubro de 2007
Ultima resposta 30 de out. de 2007
Respostas 2
Participantes 2