| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2011 17:24:49
|
cafezin
JavaBaby
![[Avatar]](/images/avatar/a129dfae036aad9ad202e35d370d7efd.jpg)
Membro desde: 11/02/2010 09:36:42
Mensagens: 78
Offline
|
Boa tarde pessoal,
Lá vai uma dúvida de OO e Java.
Qual a melhor maneira de eu descobrir qual tipo de objeto que estou trabalhando, sabendo que ele foi herdado de uma superclasse?
Por exemplo:
E tenha por exemplo 3 classes que herdam.
Dado que eu tenha a instância de um objeto com o tipo SuperClasse. Qual a melhor maneira de eu saber se ela é a uma instância de "A", "B" ou "C" ?
instanceOf ? Em seguida fazer ifs e aplicar casts para cada caso?
Ou existe algo mais interessante? Ou estou falando um monte de besteiras?
Obrigado a quem colaborar
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2011 17:29:23
|
Almeidaah
JavaChild
![[Avatar]](/images/avatar/2bb2636170e5a675b595a84643a34c4e.jpg)
Membro desde: 09/09/2010 14:53:18
Mensagens: 102
Localização: Florianópolis
Offline
|
Bem, eu acho que o instanceOf é bem significativo nesse sentido, aliás, é o único que conheço nesse caso.
Eu sempre(quase sempre) uso o instanceOf para reconhecimento de objetos.
Fico aqui no aguardo de mais respostas também.
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2011 17:55:56
|
cafezin
JavaBaby
![[Avatar]](/images/avatar/a129dfae036aad9ad202e35d370d7efd.jpg)
Membro desde: 11/02/2010 09:36:42
Mensagens: 78
Offline
|
Pensei em criar um ENUM na super classe.
Mas sabe aquela voz que te diz: "Isso é gambiaaaarra"
Então.. sei lá
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/04/2011 19:43:45
|
tinorberto
JavaEvangelist
![[Avatar]](/images/avatar/906b92b2e09a38a0dc5933b4943e87a0.jpg)
Membro desde: 29/10/2008 15:54:46
Mensagens: 344
Localização: Viçosa - Minas Gerais
Offline
|
ola, use o instaof mesmo...
Bem assim acho q fica bem simples..flw
|
Bacharel - Ciência da Computação
Universidade Federal de Viçosa
OCJP 6 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 00:59:28
|
Almeidaah
JavaChild
![[Avatar]](/images/avatar/2bb2636170e5a675b595a84643a34c4e.jpg)
Membro desde: 09/09/2010 14:53:18
Mensagens: 102
Localização: Florianópolis
Offline
|
cafezin
É, o enum não é legal, alguns mais entendidos te diriam que "não fica elegante"...
Vai de instanceof mesmo.
E aproveita e cria um getInstance nessas suas subclasses(se vc for usar efetivamente).
|
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 04:46:12
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
cafezin wrote:
Qual a melhor maneira de eu descobrir qual tipo de objeto que estou trabalhando, sabendo que ele foi herdado de uma superclasse?
E porque é que tens de saber qual é o tipo da subclasse?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 08:11:27
|
tinorberto
JavaEvangelist
![[Avatar]](/images/avatar/906b92b2e09a38a0dc5933b4943e87a0.jpg)
Membro desde: 29/10/2008 15:54:46
Mensagens: 344
Localização: Viçosa - Minas Gerais
Offline
|
usar enum é gambiarra para isso...
|
Bacharel - Ciência da Computação
Universidade Federal de Viçosa
OCJP 6 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 08:32:02
|
cafezin
JavaBaby
![[Avatar]](/images/avatar/a129dfae036aad9ad202e35d370d7efd.jpg)
Membro desde: 11/02/2010 09:36:42
Mensagens: 78
Offline
|
pmlm wrote:
cafezin wrote:
Qual a melhor maneira de eu descobrir qual tipo de objeto que estou trabalhando, sabendo que ele foi herdado de uma superclasse?
E porque é que tens de saber qual é o tipo da subclasse?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 09:39:34
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
Podes dar um exemplo concreto?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 09:49:41
|
paty_trind
Virtual Machine Man
Membro desde: 15/11/2010 13:35:39
Mensagens: 736
Offline
|
faz assim
talvez não seja a melhor maneira mas é eficaz e é a que eu conheço
This message was edited 1 time. Last update was at 06/04/2011 09:59:09
|
Developer Java EE Jr. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 09:55:48
|
cafezin
JavaBaby
![[Avatar]](/images/avatar/a129dfae036aad9ad202e35d370d7efd.jpg)
Membro desde: 11/02/2010 09:36:42
Mensagens: 78
Offline
|
paty_trind wrote:faz assim
instanceOf ? Em seguida fazer ifs e aplicar casts para cada caso?
Ou existe algo mais interessante?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 11:15:46
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
cafezin wrote:instanceOf ? Em seguida fazer ifs e aplicar casts para cada caso?
Ou existe algo mais interessante?
Se deres um exemplo concreto pode haver algo mais interessante.
O que querias dizer atrás com os métodos não serem comuns?
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 12:56:10
|
cafezin
JavaBaby
![[Avatar]](/images/avatar/a129dfae036aad9ad202e35d370d7efd.jpg)
Membro desde: 11/02/2010 09:36:42
Mensagens: 78
Offline
|
Entendi. É isso mesmo.
no caso o fazAlgo() poderia ser abstrato também né, na SuperClasse.
This message was edited 1 time. Last update was at 06/04/2011 12:56:30
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/04/2011 18:20:46
|
pmlm
GUJ Master
Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline
|
Sim, o método tem de existir na superclasse, ou como abstrato ou com lógica, consoante a situação.
|
|
|
 |
|
|