| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 11:28:19
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
Bom to querendo criar um metodo clone() so q generico.. pq pelo jeito vo precisar utilizar em varios lugares.. e n keria ter q colocar em cada POJO esse metodo.. Já queria tratar em lugar soh.. exception, casting.. enfim... Tentei mas pra variar neh n deu certo kkk... Criei essa Classe q vai ser de onde vou chamar... pra poder criar assim mais o menos Mas eu Estou achando que o problema está na hora d dar o super mas eu n tenho ideia d como fazer isso funcionar.. ai Gera esse Erro Será q Alguem pode Me Ajudar to perdidao.. MUito Obrigado
This message was edited 1 time. Last update was at 13/05/2010 11:29:47
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 12:15:45
|
Marck
Virtual Machine Man
![[Avatar]](/images/avatar/efc9ea3e0c2ed2c2481fe1252019266e.jpg)
Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline
|
Olá,
Cara, fiz algumas alterações aqui e até funcionou. Funcionou para clonar a class Clone. Porem, o objeto que tem dentro dela, o Pessoa, nao clona.
Dei uma olhada na net e tem algo como DeepCopy.
Outra alternativa poderia ser fazer com Reflection.
att,
|
"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre
Besteiras sobre programação
http://toobject.wordpress.com/
DataModelDinamic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 12:25:30
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
Então ai q tá neh.. o problema acho q tá no super ele executa na classe q ele tá..
This message was edited 2 times. Last update was at 13/05/2010 12:29:32
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 12:40:32
|
Marck
Virtual Machine Man
![[Avatar]](/images/avatar/efc9ea3e0c2ed2c2481fe1252019266e.jpg)
Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline
|
Não é isso. O sem o super entraria em loop. O problema ai é que Clone<T> que é clonavel, e não o seu objeto. Pesquisei e achei uma alternativa. Funcionou: ...porém seu objeto tem que ser Serializavel. Artigo completo -> http://www.javaworld.com/javaworld/javatips/jw-javatip76.html?page=2
This message was edited 1 time. Last update was at 13/05/2010 12:42:00
|
"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre
Besteiras sobre programação
http://toobject.wordpress.com/
DataModelDinamic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 12:48:57
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
Eu Antes de implementar uma solução na parte de um dao generico consegui escapar d por serializable nas classes...
o qto isso pode me prejudicar no meio do projeto caso eu coloke isso nos POJO's?????
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:03:02
|
Marck
Virtual Machine Man
![[Avatar]](/images/avatar/efc9ea3e0c2ed2c2481fe1252019266e.jpg)
Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline
|
Então cara, eu não vejo problema em ter herança com Serializable, ainda mais que trata-se de uma Interface marcadora, ou seja, voce não vai perder usando o extends.
Mas já que voce quer fugir disso, a ultima opção que consigo imaginar é fazer o clone com Reflection.
Este exemplo eu não testei, mas dá uma olhada:
http://www.stupidjavatricks.com/?p=26
|
"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre
Besteiras sobre programação
http://toobject.wordpress.com/
DataModelDinamic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:05:58
|
Marck
Virtual Machine Man
![[Avatar]](/images/avatar/efc9ea3e0c2ed2c2481fe1252019266e.jpg)
Membro desde: 15/08/2006 16:15:11
Mensagens: 598
Offline
|
OPá!!!
Testei e funcionou!
|
"A vida me deu tudo que eu pedi. Agora se o que eu pedi foi pouco, ai o problema já é meu!". Sartre
Besteiras sobre programação
http://toobject.wordpress.com/
DataModelDinamic |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:19:00
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
kkkkkkkkkkkk... Boa..
Então pq eu achei um topico no Guj... de um cara q tava fazendo com ObjectOutputStream
e talz parecido com akele exemplo q vc me mando...
e tava recriminando talz e utilizava muita memoria com perigo de estourar sei lá...
Mas vc acha q esse com Reflection eh melhor??
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:22:40
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
valeo acho q ja da pra começar será q com reflection tem como eu pegar as variaveis de instancias do objeto e clonar tb no mesmo metodo???
This message was edited 1 time. Last update was at 13/05/2010 13:27:37
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:32:26
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Acho melhor você adicionar um método em cada POJO. Se seus pojos tiverem um ancestral comum (e não forem tão pojos assim), você poderia colocar o clone lá também. Afinal, o método é simples assim: Não precisa lançar a exception, já que seu objeto efetivamente é clonável. E já faz quem programa parar para pensar se só isso é suficiente. Lembre-se que pode ser necessário fazer deep copy de objetos relacionados, e que nada impede que objetos tenham referências circulares. Geralmente é uma má idéia tratar clonagem ou serialização de maneira genérica e despreocupada no sistema.
This message was edited 1 time. Last update was at 13/05/2010 13:33:01
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:40:31
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
ViniGodoy...
Mas mesmo assim tenho q dar um throws no metodo neh...
esse era um detalhe q eu queria evitar...
Tipo Gostaria de tratar tudo isso em 1 lugar soh.. neh..
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:43:45
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Não, não tem que dar throws no método.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:48:15
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Como vc vai tratar em um lugar só, se cada objeto é diferente?
Você pode mesmo usar reflexão, mas ela insere outros problemas:
1. Os erros de reflexão ocorrem em Runtime;
2. Ela não pensará se a cópia que está fazendo faz sentido ou não;
3. Você deverá tratar manualmente casos de referências circulares;
Ainda acho melhor escrever 3 linhas a mais por POJO (nem é muita coisa), e manter seu programa seguro na compilação e uma obrigação do seu programador pensar no que está fazendo.
A única coisa chata é que realmente você ainda precisará fazer "implements Cloneable" no topo da sua classe.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:49:18
|
colored
GUJ Ranger
![[Avatar]](/images/avatar/c98a3fedd72195a304fba80ebaa320fe.jpg)
Membro desde: 07/06/2007 12:27:41
Mensagens: 864
Localização: SP
Offline
|
ueh então to fazendo algo de errado...
Por exemplo... ele marca o super.clone com "Unhandled exception type CloneNotSupportedException"
|
Caelum - FJ 11, 21, 26, 27, 31, 57 =D
Developer of Something. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/05/2010 13:53:04
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
É verdade, vc terá que fazer um try catch.
Ainda é melhor que o throws, pois aí quem usa a classe poderá fazer:
Usuario u2 = u1.clone();
Sem ter que capturar exception alguma.
|
@ViniGodoy - Lattes
Tem dúvidas de Java? Poste no fórum! Não respondo dúvidas de java via MP!
Ponto V! - Desenvolvimento de Jogos Profissional - @Pontov - Facebook
Projeto Towel - Swing de uma forma inteligente (Novo lar do ObjectTableModel e do Auto-Filtro).
Ei... você está usando DefaultTableModel no seu projeto??
Não faça isso! Veja: http://www.guj.com.br/posts/list/15/199067.java#1001295 |
|
|
 |
|
|