| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 14:25:08
|
Raff
Virtual Machine Man
![[Avatar]](/images/avatar/1f8d87e1161af68b81bace188a1ec624.png)
Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline
|
Pessoal qual a deferença em declarar um enum dentro de uma classe e declarar um enum fora de um classe ?
ex:
ex2
Pessoal outro coisa que eu tenho duvida tbm é por que o construtor de enum so deve ser private ???
Pessoal não to entendendo muito bem Enum se alguem poder me dar um explicação como eles funcionam agradeço !!!!!!
|

SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR... |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 14:32:11
|
geraldobarboza
JavaTeenager
Membro desde: 22/05/2005 15:24:41
Mensagens: 150
Offline
|
a diferenca é só na chamada..
um vc chama direto o enum e outro precisa usar a classe.
acho q é isso
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 14:38:30
|
thiago.correa
GUJ Master
![[Avatar]](/images/avatar/c37f9e1283cbd4a6edfd778fc8b1c652.jpg)
Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline
|
Enum dentro de uma classe funciona como uma innerclass, ou seja ela não é "visível" para as demais classe, so para a classe onde a mesma se encontra!
|
---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 14:39:02
|
Java Player
JavaTeenager
![[Avatar]](/images/avatar/9910489e4ff310896dce21303a8e7fda.png)
Membro desde: 17/08/2006 17:11:57
Mensagens: 180
Offline
|
Veja esse exemplo de código que você vai entender:
|
SCPJ 6 - 93%
Quizzes .com.br
Jogos para Celular .com.br
Jogos para Android .com.br
Android Gameplay .com |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 15:17:04
|
Raff
Virtual Machine Man
![[Avatar]](/images/avatar/1f8d87e1161af68b81bace188a1ec624.png)
Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline
|
Pessoal andei lendo e vi que não se poder instanciar um Enum, digo dar new em um enum será que é por isso que o construtor de um enum tem que ser private ??
|

SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR... |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 15:21:48
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
O construtor do enum tem que ser private porque esse não pode ser chamado fora do enum, isto é, o construtor só existe porque quando vc declara uma constante de enum com argumentos, o seu construtor vai ser chamado internamente pela JVM para atribuir os argumentos às constantes. Nem mesmo você dentro do enum pode chamar o construtor do Enum. É impossível o programador chamar o construtor do enum.
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 15:24:49
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
thiago.correa wrote:Enum dentro de uma classe funciona como uma innerclass, ou seja ela não é "visível" para as demais classe, so para a classe onde a mesma se encontra!
Isso não é verdade. Qualquer Inner class estática e pública pode ser usada fora da classe onde foi declarada, como o caso do enum.
É útil pq muitos enums tem nomes similares como Tipo e seus valores estarão diretamente associados à uma classe específica. Então, é até melhor que eles estejam intrinsecamente ligados à classe a qual pertencem, como no exemplo aqui embaixo:
|
@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) 05/07/2007 15:25:41
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Raff wrote:Pessoal andei lendo e vi que não se poder instanciar um Enum, digo dar new em um enum será que é por isso que o construtor de um enum tem que ser private ??
É isso mesmo. Uma vez declarada, você não pode criar novos itens na enumeração. Até porque, isso iria ferir o conceito de enum.
|
@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) 05/07/2007 15:30:10
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
Raff wrote:
Aproveitando o exemplo que o Raff deu sobre enum para explicar melhor:
Quando a JVM for carregar o enum Naipe ela vai rodar o construtor que recebe um int. Com isso, as constantes terão seus atributos inicializados com o valor passado como argumento.
Ou seja, você pode fazer:
A diferença de declarar dentro ou fora da classe é que se você estiver fora da classe onde o enum foi declarado você vai precisar informar o caminho da classe para acessar as constantes do enum (como um membro estático).
Java Player wrote:
Em uma outra classe você precisaria fazer:
thiago.correa wrote:
Enum dentro de uma classe funciona como uma innerclass, ou seja ela não é "visível" para as demais classe, so para a classe onde a mesma se encontra!
Assim como inner classes, O enum é visível em outras classes de acordo com seu nível de acesso. Exemplo, Se uma inner class for public, ela é acessada de outras classes. O mesmo ocorre para o enum.
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 15:34:43
|
RafaelVS
JavaEvangelist
![[Avatar]](/images/avatar/50454f95bbf5e6478cc0a55d08338731.jpg)
Membro desde: 13/12/2006 09:50:16
Mensagens: 405
Localização: Recife - PE
Offline
|
Outra coisa importante a ser vista sobre enums é que eles podem ser usados em switchs:
|
- Mestrando em Engenharia de Software no CIn/UFPE;
- Pós-Graduado em Engenharia de Software na POLI/UPE;
- Bacharel em Ciência da Computação na UNICAP (Universidade Católica de Pernambuco);
- Sun Certified Programmer for the Java 2 Platform, Standard Edition 5.0 (score 95%);
- Sun Certified Web Components Developer for J2EE 1.4 Platform (score 89%) |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 16:49:47
|
thiago.correa
GUJ Master
![[Avatar]](/images/avatar/c37f9e1283cbd4a6edfd778fc8b1c652.jpg)
Membro desde: 26/03/2006 18:54:30
Mensagens: 1861
Offline
|
Ok chupei bala sorry!
|
---
"Se não puder ajudar, atrapalhe, afinal de contas o importante é participar!"
Thiago
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 05/07/2007 17:13:28
|
Toni_Fatec
JavaTeenager
Membro desde: 09/05/2006 20:01:16
Mensagens: 165
Offline
|
ViniGodoy wrote:
Raff wrote:Pessoal andei lendo e vi que não se poder instanciar um Enum, digo dar new em um enum será que é por isso que o construtor de um enum tem que ser private ??
É isso mesmo. Uma vez declarada, você não pode criar novos itens na enumeração. Até porque, isso iria ferir o conceito de enum.
Um tipo ENUM define constantes que não podem ser modificadas, por isso eles são final implicitamente.
RafaelVS wrote:
A diferença de declarar dentro ou fora da classe é que se você estiver fora da classe onde o enum foi declarado você vai precisar informar o caminho da classe para acessar as constantes do enum (como um membro estático).
exato porque as enum são realmente tipos static, porem novemente isto fica implicito em TODOS os tipos enum.
|
Tecnológo em Informática para Gestão de Negócios - UNESP/FATEC
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 06/07/2007 11:59:36
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
Toni_Fatec wrote:
É isso mesmo. Uma vez declarada, você não pode criar novos itens na enumeração. Até porque, isso iria ferir o conceito de enum.
E quando foi que eu disse o contrário?
Eu recomendo a todos a leitura do item 21 do livro effective java, que pode ser lido neste pdf. Ele explica como o typesafe enum pattern é implementado. O tipo enum do java é apenas um syntax suggar espertinho para esse pattern. Ele também dá considerações sobre o que pode ser feito com o enum e como.
|
@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) 08/09/2010 23:14:09
|
andredecotia
JWizard
![[Avatar]](/images/avatar/3e0c75ef9041e74cc2a533fa0fbbf33a.jpg)
Membro desde: 19/10/2009 14:37:32
Mensagens: 2267
Localização: São Paulo
Offline
|
Help me... Senão não vou dormir hoje hehehe...
não tou conseguindo comparar o valor do enum usando equals...
Veja meu código:
e o enum:
|
--
André AS
Analista Programador Java Web freelancer / home office
Linkedin: http://www.linkedin.com/profile/view?id=41470291&trk=tab_pro
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 08/09/2010 23:50:30
|
ViniGodoy
Moderador
![[Avatar]](/images/avatar/1921493b5362e63fbe8983f4bd54157d.png)
Membro desde: 11/12/2006 08:22:01
Mensagens: 20580
Localização: Curitiba/PR
Offline
|
andredecotia wrote:Help me... Senão não vou dormir hoje hehehe...
Se vc já abriu seu tópico, para que ressuscitar esse? E como disse o bezier curve:
Um enum é sempre diferente de uma String, não?
O método equals sempre retorna false para tipos diferentes.
|
@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 |
|
|
 |
|
|