ENUMs [RESOLVIDO]

2 respostas
aotcassiano
Boa noite pessoal. Bom, estou começando agora no JAVA e lendo a respeito de ENUMs surgiu uma dúvida.' obs.: estou lendo o livro "Deitel - Java Como Programar - 6 Edicao - Portugues". Vocês recomendam algum outro?'
 Toda constante ENUM é um objeto da classe a qual ela percente. Portanto, sendo um obejto ela possui uma copia das variáveis de instância e dos metodos daquela classe, correto?
      - tomando como exemplo a seguinte declaração de constante:

JHTP6(“JAVA How To Program 6r”,“2005”);,

por definição eu sempre terei de ter o número de variáveis FINAL conrrespondente ao número de Strings declaradas na constante ENUM? No caso deste exemplo fica assim a declaração de constantes ENUM:

private final String title;
private final String copyRightYear;

- cada constante ENUM terá tambem uma cópia de cada outra constante ENUM da classe? - acho que não mas, ta incomodando

Bom, é isso.
vlws, abrasso!!!

2 Respostas

CrOnNoS

Também estou estudando o mesmo livro e ele é realmente muito bom (opinião pessoal, apesar que realmente não gostei muito de como ele não explica bem ENUM’s). Outro que vejo gente recomendando é o “Use a cabeça” do java.

Vamos ver se consigo ajudar hehe

Creio que aqui já é uma questão de definição de classe e não de enum, como você mesmo disse, toda constante enum é um objeto da classe (variável por referência). Logo, se você quer usar um construtor com 2 strings em argumento, você precisa ter ele implementado. Mas não é obrigatório usar esses argumentos.

private Livro(String titulo, String ano) { }

Esse construtor funcionaria perfeitamente mas não está utilizando os argumentos.
Para salvar qualquer dado dentro do enum, sim, você precisaria de uma constante para cada dado.

Você sempre vai ter uma referência estática ao seu enum onde ele estiver visível. Essa referência vai ter também uma referência a todos os outros objetos ENUM que você declarou inicialmente (JHTP6, DHTP, HTMLB por exemplo caso tivessem mais esses 2).

Exemplo da referência estática:

System.out.println(Livro.JHTP6.getTitulo());

Agora, se você declarar uma nova variável do tipo enum:

Livro livroAtual;

Ela vai inicialmente estar referênciando a “null” como uma variável de referência normal, e vai poder referênciar apenas a objetos da classe Livro. Sendo que essa referência será apenas a UM objeto.

Exemplo da variável livroAtual referênciando um objeto Livro:

livroAtual = Livro.JHTP6;

Não sei se consegui responder porque não tenho certeza se entendi a última pergunta mas, tentei hehe. Espero que tenha ajudado.

Edit: adicionei os dois exemplos que deve dexar mais claro.

aotcassiano
Boa noite, [u]CrOnNoS[/u] e obrigado.
 Respondeu sim, e realmente a parte de ENUMs no livro do DEITEL deixou a desejar. Não detalhou bem como os capítulos anteriores.
  vi este livro que você citou, me disseram que é muito bom!

 Com relação a última pergunta eu me expressei muito mal. Eu estava confundindo constante Enum com a variável de instância.
 Mesmo assim você conseguiu responder, o que eu queria perguntar na verdade kkkkk. Vendo seu exemplo caiu a ficha.....'Toda variável ou objeto, aqui no caso representado pela constante, pode acessar suas variável de campo através dos metodos' ... básico do básico, mas na hora como disse, confundi a variável de campo(JHTP6) com a referência criada na 'main'.

obrigado de novo…
vlw aew, abrasso!!!

Criado 11 de agosto de 2009
Ultima resposta 12 de ago. de 2009
Respostas 2
Participantes 2