Tenho um map com vários objetos. Este tem como chave uma string que representa o nome de um atributo de uma classe.
Ao especificar um atributo vou recuperar o objeto que esta no map. Até ai legal.
Tenho uma tela de pesquisa que ao ser instanciada, são passados os atributos válidos para pesquisa. Esta terá um jtextfield que retornará o valor a pesquisar.
Agora tenho que jogar esse atributo num object fazendo casting para o tipo original dele.
Para saber o tipo, sendo que tenho o nome do atributo, uso reflection para obter o Class do tipo:
Fabricio, nao entendi uma coisa… pra que vc quer fazer cast pra um objeto se vc nao sabe o tipo dele em tempo de compilacao? O que voce vai fazer com o objeto, depois que tiver feito o cast?
Andei dando uma procurada na net, e li q eh impossível fazer um casting dinamico, pq ele eh validado em tempo de compilacao ( ou seja, soh serve pra vc falar pro seu compilador q os objetos sao de tipos difentes, mas vc agarante q um pode receber o outro )…
O compilador confia em vc, mas c durante a execucao der algum problema ele te retorna um ClassCastException
Alem disso, dah uma pensada no q o Daniel Quirino postou … Qd vc disse 30 classes vc estava apenas exemplificando ou eh seu caso?
Tela de consulta.
Tenho uma JInternalFrame que possui um combo com os atributos que o usuário vai escolher para pesquisar.
Tenho também um JTextField onde ele vai digitar o valor de sua pesquisa.
Tenho ainda uma table onde serão exibidos os dados dos objetos retornados pela pesquisa no hibernate (uma List).
Pensei em fazer o seguinte:
Exemplo:
O cara escolhe no combo nome e digita no JTextField o nome ou parte (“Mari”).
Pego o atributo “nome” e o valor “Mari” e jogo no map
map.put(“nome”, “Mari”).
Mas querendo refinar um pouco mais a pesquisa o cara escolhe rua e digita(“Sete de se”).
Pego o atributo “endereco” e o valor “Sete de se” e jogo no map
map.put(“endereco”, “Sete de se”).
Dessa forma terei no map 2 objetos String.
Quero disponibilizar também a pesquisa por código:
O cara escolhe no combo codigo e digita no JTextField o codigo “5”.
Pego o atributo “codigo” e o valor “5” e jogo no map
map.put(“codigo”, “5”).
Quando recebo o map e vou montar a Criteria do hibernate não sei qual tipo de valor tenho no map.
Como a criteria recebe atributo e objeto referente ao atributo sou obrigado a fazer o casting.
Foi assim que eu entrei na fria acima .
Alguém tem alguma sugestão de alguma forma diferente pra fazer isso.
É que eu queria uma tela que service para qualquer consulta. Eu passo os valores do combo e depois monto a Table de acordo com o resultado (List).
:arrow: Pra cada VO (Ex.: Cliente, Cidade, Estado) eu teria uma projeção de tela diferente. Por isso que eu falei uns 30. De que forma poderia definir interfaces pra eles.
A principio não, mas acho que a possibilidade mais a frente de precisar de algo parecido. Mas daí é mais fácil verificar se é primitivo do que se é objeto já que temos os primitivos definidos e em número pequeno.