Dentro de Produto eu tenho uma outra Classe Estoque, exemplo
class Produto {
private int codigo;
private string nome;
private Estoque estoque;
public int getCodigo() { return codigo; }
public void setCodigo(int codigo) { this.codigo = codigo }
public Estoque getEstoque() { return estoque; }
public void setEstoque(Estoque estoque) { this.estoque = estoque; }
O que eu preciso é algo tipo iReport, qdo eu passo os Fields
$F{estoque.quantidade}
getProduto().getEstoque().getQuantidade();
Agora o que eu estou fazendo é isso mas da erro de cast
String[] as = {"Codigo", "Nome", "Estoque.Quantidade"};
Produto produto = (Produto)registro.get(i);
Method m = null;
Object classe = produto.getClass();
for (String s : as) {
m = ((Class)cs).getMethod("get" + s);
cs = m.getReturnType();
}
return m.invoke(produto); <--- Aqui funciona nos 2 primeiros elementos do array, mas no terceiro nao funciona pq a Tabela esta dentro de produto, se eu mudar para produto.getTabela() ai funcionaria.
Se tivesse como eu pegar a instancia da classe seria bom
Porque precisa usar reflection?
Você já tem a instância da sua classe, é o objeto que você chamou de produto.
Para obter o estoque é só chamar o método getEstoque() desse objeto.
Eu sempre vou saber a primeira Class, mas as subclasses podem mudar no caso de produtos, tenho Estoque, Tabela, WA e etc, no caso de clientes, tenho endereco, transportadora e etc.
Partindo da primeira Class quero pegar as outras, como neste caso:
String[] as = {“Codigo”, “Nome”, “Estoque.Quantidade”, “Tabela.Custo”, “WA.Quadra”};
Depois de tantos anos nessa indústria vital… Eu aprendi que nem toda generalização é boa.
Talvez o ideal seja você tratar cada caso de acordo com o que cada caso necessitar.