| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:06:58
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 735
Offline
|
Se eu implemento Comparable e sobreescrevo compareTo dessa forma tudo bem...
E se eu fizer dessa forma o que acontece na comparaçao, nada né?
Tem outra maneira de usar compareTo e compare, sem usar compareTo das classes Wrappers e String?
This message was edited 1 time. Last update was at 09/02/2010 10:53:51
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:08:55
|
entanglement
Forum Spammer
Membro desde: 26/09/2009 09:18:56
Mensagens: 1270
Offline
|
Você entendeu o que faz compareTo? Ele tem de voltar um valor positivo (digamos +1) se o valor do objeto é maior que o valor a ser comparado, um valor negativo (digamos -1) se o valor do objeto é menor que o valor a ser comparado, e 0 se o valor é igual ao valor comparado.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:22:55
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 735
Offline
|
Sim eu sei, mas no caso se eu sobreescrever dessa forma:
ele sempre vai retorna 5, daí ele nao vai estar comparando nada? Pq nem sequer ele esta usando o objeto "o" nem o this, pra fazer essa comparaçao e retornar positivo, negativo ou 0 se for igual...
This message was edited 1 time. Last update was at 09/02/2010 10:29:38
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:31:24
|
entanglement
Forum Spammer
Membro desde: 26/09/2009 09:18:56
Mensagens: 1270
Offline
|
Pois é, se sempre retornar 5, então você implementou incorretamente compareTo.
Ele não é que "não faz nada"; ele está retornando um resultado incorreto se o objeto passado como parâmetro for < ou == ao objeto. Se for >, então está retornando um valor > 0, e só nesse caso ele volta um valor correto (é igual à história do relógio parado - ele está certo duas vezes por dia, e errado no resto do dia).
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:35:59
|
mario.fts
Virtual Machine Man
![[Avatar]](/images/avatar/9e96d422fba85185a33829439f5df09d.jpg)
Membro desde: 14/05/2008 09:41:06
Mensagens: 629
Localização: São Paulo - ZL
Online
|
O que vc fez é que o objeto sempre será "maior" que o outro objeto que vc estiver comparando. De acordo com o contrato do método, está errado. nada impede vc de fazer isso, mas não deixa de ser errado. é como sobreescrever o equals e retornar true ou false sempre.
|
Mário Amaral Gonçalves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:36:33
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 735
Offline
|
é igual à história do relógio parado - ele está certo duas vezes por dia, e errado no resto do dia
kkkkkkk, entendi então vai retornar um valor correto somente se o objeto que chamou compareTo for maior, mas e se por um acaso for menor? Acontece erro em tempo de execução ou nada acontece?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:40:17
|
entanglement
Forum Spammer
Membro desde: 26/09/2009 09:18:56
Mensagens: 1270
Offline
|
Não retorna erro nenhum, mas coisas que você esperaria que funcionassem (como ordenação com Collections.sort) não vão funcionar direito. OK?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:40:47
|
mario.fts
Virtual Machine Man
![[Avatar]](/images/avatar/9e96d422fba85185a33829439f5df09d.jpg)
Membro desde: 14/05/2008 09:41:06
Mensagens: 629
Localização: São Paulo - ZL
Online
|
se o objeto for menor, ele vai continuar falando que é maior. ai a ordem vai estar errada no final.
|
Mário Amaral Gonçalves |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 09/02/2010 10:49:45
|
evertonsilvagomesjava
Virtual Machine Man
![[Avatar]](/images/avatar/6370988b46be58caec00d925d91d2f99.png)
Membro desde: 23/08/2009 13:14:01
Mensagens: 735
Offline
|
Ahh sim entendido entao, obrigado entenglament e mario.
|
|
|
 |
|
|