REFLECTION - Erro ao passar argumento ao invoke: "object is not an instance of declaring class"

CLASSE A - que instancia uma classe de consulta, enviado seu objeto a ela com o seguinte método:

private void consultar() { conCliente cC = new conCliente(); cC.setVisible(true); cC.setReflection(this); }

CLASSE B - Possuo uma classe, que recebe este argumento, no seguinte método:

public void setReflection(Object o) { ob = o; }

CLASSE B - classe, que devolve a este OB um objeto do tipo importer, via reflection…:

[code]private void importar() {
//importar
    importer imp = new importer();
    imp.setNome(JTnome.getText());
    imp.setBairro(JTbairro.getText());
    imp.setCpf(JTcpf.getText());
    imp.setTelefone(JTtelefone.getText());
  //reflection
    Class<?> c = null;
    try {
      c = Class.forName(ob.getClass().getName());
    } catch (Exception e) { sst("Erro [importar]: Falha ao carregar Reflection do objeto: "+ob); }
     Method[] m = c.getDeclaredMethods();

     int i = 0;
     while (i < m.length) {

       if (m[i].toString().contains("cCretrive")) {
           try {

             m[i].invoke(imp); ////ERRO
             i = m.length+1;
             this.dispose();
           } catch (Exception e) { sst("Erro [importar]: Falha ao invokar método cCretrive: "+e); break; }
       }
         i++;
     }


}[/code]

O Erro ocorre na linha demarcada com o comentário: ////ERRO, com a exceção: “object is not an instance of declaring class”.

O método que estou tentando invokar, é o seguinte:
CLASSE A -

public void cCretrive(consultas.importer ob) { String cpf = ""; cpf = ob.getCpf(); //traz na tela ;D System.out.println(cpf); }

Só um comentário…

Pq você faz:

[code]
Class&lt?&gt c = null;

try {
c = Class.forName(ob.getClass().getName());
} catch (Exception e) { sst("Erro [importar]: Falha ao carregar Reflection do objeto: "+ob); [/code]

Ao invés de simplesmente

Class&lt?&gt c = obj.getClass();

?

Outra coisa, a assinatura do método invoke é

invoke(Object obj, Object[] args) 

O primeiro parâmetro é o objeto em que o método será invocado.

Sua variável ob não é da classe Importer. É da classe de ob que o método cCretrive vem. No entanto, você está chamando o invoke em imp, que é o seu Importer.

O correto, se você quer passar o importer como parâmetro, é:

m[i].invoke(ob, imp);

Sensacional,
muito obrigado, funcionou perfeitamente.

Abraços