Vale a pena usar Enum?

Bom dia,
Gostaria de saber quando suar classes enum, no sentido: a performance é melhor do que uma classe estática com constantes? Tem outras melhorias?
Obrigado.

Cara,

o código fica muito mais limpo…
Além de que, vc pode salvar o ENUM na base de dados (como String ou ordinal).

Com o enum, você pode adicionar / remover tipos sem ter que refatorar o código…
Vixxx, dps que conheci o ENUM nunca mais usei variaveis estáticas

Você ainda pode definir métodos no Enum, veja o exemplo onde foi feita uma calculadora com Enum:

As vezes vejo a idéia do enum como um segurador de variáveis. [=

Tem gente que usa para fazer como um Singleton boladão da vida, ou com métodos e tudo mais.

Eu, pessoalmente não gosto.

Mas ele se comporta como uma classe; se você quiser, escreva uns 3 métodos no enum e depois troque de public enum MeuEnum para public class MeuEnum. Vai funfar do mesmo modo.

Eu gosto de usar o Enum. Quando preciso fazer laguma parametrização ou algum dado que dificilmente será mudado.
Fica mais organizado, em um sistema grande faz muito senntido usar.

[quote=kbello]Bom dia,
Gostaria de saber quando suar classes enum, no sentido: a performance é melhor do que uma classe estática com constantes? Tem outras melhorias?
Obrigado.[/quote]

A performance é exatamente a mesma, só que é a forma que é recomendada atualmente (interface com constantes ou classe estática com constantes são coisas antigas, que não devem mais ser usadas em código novo - como o Java 5 foi lançado há 8 anos, eu acho que não se deve escrever código à moda antiga).

(Puxa, como o tempo passa depressa - eu me lembro do lançamento do Java 5, foi quando o Scott McNealy levou no colo um filhote de tigre :slight_smile: )

[quote=kbello]Bom dia,
Gostaria de saber quando suar classes enum, no sentido: a performance é melhor do que uma classe estática com constantes? Tem outras melhorias?
Obrigado.[/quote]

O enum foi incluido no java 5 exatamente porque essas soluções antigas não são boas. Têm diversas falhas. O mais parecido seria usar uma classe que tem estáticos que são instancias da classe. Mas isso é exactamente o que o enum é.
Só que o enum é um objeto especial como a String que a jvm trata de forma mais avançada. Por isso a serialização de enum não permite que vc crie varios objetos iguais como seria com os estáticos ( e por isso que da uma boa base para um singleton).

As vantagens do enum sobre os outros métodos são enormes. E em java enum são classes e têm instancias ( não são inteiros disfarçados como em C++ ou C#) e isso lhe permite implementar ineterfaces, ter vários métodos, etc… o que vc quiser.

Uma coisa que é boa em enums é que é possível você usá-los no switch, o que não é possível com simples instâncias de objetos.

Muito obrigado pelas resposta galera! Está bem mais claro pra mim agora. :smiley:
Abraços!