InstanceOf?  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
cafezin
JavaBaby
[Avatar]

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









Almeidaah
JavaChild
[Avatar]

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.


[MSN]
cafezin
JavaBaby
[Avatar]

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á
tinorberto
JavaEvangelist
[Avatar]

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
[Email] [MSN]
Almeidaah
JavaChild
[Avatar]

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).



[MSN]
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?
tinorberto
JavaEvangelist
[Avatar]

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
[Email] [MSN]
cafezin
JavaBaby
[Avatar]

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?


pmlm
GUJ Master

Membro desde: 20/04/2009 12:20:07
Mensagens: 1199
Localização: Portugal
Offline

Podes dar um exemplo concreto?
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.
cafezin
JavaBaby
[Avatar]

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?
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?

cafezin
JavaBaby
[Avatar]

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

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.
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team