Pessoal, estou querendo desenvolver com o padrão DAO classes para persistir meus objetos via file, rdbms e até mesmo via xml-rpc. Por isso a interface deve ser bem simples e genérica, e todas as operaçoes gostariam que fossem feitas pela interface, e com isso, tenho que usar Casting de dados para funcionar, algo do tipo:
Vejam que precisei fazer o casting com = (ServerDAO) e = (Server), já que na interface retorna Object. É ruim usar casting? Tem forma melhor? Usando generics seria mais simples e não precisaria de casting?
Cara eu tb tenho essa duvida, pois estou estudando o hibernate e vejo que ele usa cast a doidado para pegar um JavaBean…
Unica coisa q posso lhe dizer é que usando generics você força o cast a ser de uma classe só.
D
davi-baldin
hehehe, cade os cobras pra ajudar a gente?
dipeloco
Bom dia galera,
No meu ponto de vista você poderia utilizar um sobrecarga de metodos para os tipos de objetos que vc deseja retornar … assim te daria mais trabalho na criaçao da classe fabrica mais facilitaria o uso no desenvolvimento dos componentes que à utilizariam… ou caso isso não fosse possivel eu impleentaria o generics em ultimo caso faria dessa forma pois enche o saco ficar fazendo cast e outra ao liberar o cast de object vc abre portas para quem for utilizar sua classe errar, pois qualquer coisa faz cast de object … então compila qualquer cast mais em execução pode dar pau então … não que o cast seja ruim … ele apenas não é muito mais facil … quanto os outros metodos.
é isso que eu penso …
isaiasa
Não vejo problema nenhum em fazer Cast.
Faça-o se necessário. Mas se precisar usar, não tem problema.
Abraço
vtdb11
Caso usar o java Tiger(1.5) ou superior use a sobrecarga de método como o dipeloco falou. Fica assim:
Blz!
Mas ainda fica uma duvida.
O Cast é oneroso??
marcelo_emanoel
Rapaz vc pode deixar essa sua interface muito mais genérica usando generics cara e sem a necessidade de castings a pergunta necessáriamente é se vc pode usar java 5 se for feito aqui no trabalho que tem projeto como o meu… q eh java 1.4 struts 1.1 aí vc não tem outra solução a não ser o cast se quiser usar somente essa interface… mas caso vc possa usar… vai a dica USE generics
Oba, eu posso usar 1.5 sim, mas com o generic em tenho outro problema, veja...
Erro de sintaxe em ServerStore
The type ServerStore must implement the inherited abstract method IStore.delete(Object)
publicinterfaceIStore<I>{publicIget();publicvoiddelete(Iinstance);}publicclassServerStoreimplementsIStore{publicvoiddelete(Serverinstance){// TODO Auto-generated method stub}publicServerget(){returnnewServer();}}
Ai eu ainda acho que o generics não vai me ajudar muito....
Ou estou fazendo errado ?
abraços
vtdb11
Tem um problema no seu código…
Você tem que especificar no extends IStore o tipo genérico!
Assim:
publicinterfaceIStore<I>{publicIget();publicvoiddelete(Iinstance);}publicclassServerStoreimplementsIStore<Server>{publicvoiddelete(Serverinstance){// TODO Auto-generated method stub}publicServerget(){returnnewServer();}}