Dúvida construtor Enum

5 respostas
rmala_ti

Pessoal,
estava tentando fazer uma declaração de enum, e me bateu uma dúvida.
Quando declarei o construtor, o Eclipse automáticamente(sem eu pedir :twisted: ) colocou o modificador public.
Mas na hora de compilar, ele reclamou :twisted: pois o modificador deveria ser private.
Eu voltei ao livro da Kathy e não encontrei nada falando do modificador para o construtor de enum, então gostaria de saber de vocês. Quais modificadores são permitidos a construtuores de enuns?
Também tentei o default e funcionou de boa. :smiley:
Obrigado aos que puderem responder.

5 Respostas

D

public e default

passei batido… não notei que era o construtor do enum…

[]s

Dieval_Guizelini

rmalati ,

tem esse link que faz um comentário, dizendo que as restrições para enum são:

Restrictions on enum types
Though enum types are full-fledged classes, the following are not allowed with enums:

enums cannot be subclassed
enums cannot have public constructor
enums are not allowed to be instantiated (using new)
enums cannot be cloned
All of these are enforced during compile-time.

http://deepjava.wordpress.com/2006/11/21/type-safe-enumerations-in-java-50/

fw

rmala_ti

Hum, legal. Realmente não sabia.
Mas então pq o Eclipse colocou o modificador como public, alguma razão?

Dieval_Guizelini

A questão com o eclipse eu não sei te dizer,
mas tem mais uma referência sobre o assunto, veja o item 8.9:

http://java.sun.com/docs/books/jls/third_edition/html/classes.html#16830

Das especificações dá para se entender porque o default é aceito, ele internamente interpreta como private.
Toda declaração de enum equivale a final class, logo não pode ter subclasse.
todos as constantes são declaradas implicitamente sendo static e final.

fw

rmala_ti

Amigão,
eu to fazendo a maior confusão!
To confundindo modificador do enum que pode ser public ou default com o modificador do construtor.
Eu vou dar uma melhor estudada inclusive nos links que você me passou.
Muito obrigado!

Criado 27 de fevereiro de 2008
Ultima resposta 28 de fev. de 2008
Respostas 5
Participantes 3