Java Enum o que é?
Introduzida na versão 1.5 do java o enum é uma palavra reservada que significa enumeração, serve para definir um conjunto de constantes de enumeração. Constantes enum são implicitamente static e final e você não pode mudar lá o valor, uma vez criado.
Beneficios de Enum :
- Enum é type safe você não pode atribuir qualquer outra coisa que não seja uma constante para uma java Enum.
- Enum tem seu proprio name-space.
- Uma das melhores característica de Enum é que você pode usar Enum em Java dentro de uma instrução Switch como int ou um char, dessa forma o código ganha mais legibilidade.
- Adição de novas constantes Enum em Java é fácil, você pode adicionar novas constantes, sem quebrar o código existente.
- As instâncias dos tipos enum são criadas e nomeadas como se fosse uma declaração da classe, sendo fixas e imutáveis (o valor é fixo);
- Não é permitido criar novas instâncias com a palavra chave new;
- O construtor é declarado private, embora não precise de modificador private explícito;
- Seguindo a convenção, por serem objetos constantes e imutáveis (static final), os nomes declarados recebem todas as letras em MAIÚSCULAS;
- As instâncias dos tipos enum devem obrigatoriamente ter apenas um nome;
- Opcionalmente, a declaração do enum pode incluir variáveis de instância, construtor, métodos de instância, de classe, etc.
Criando enums:
1: public enum DiasdaSemanaEnum {
2: DOMINGO(1),SEGUNDA(2),TERCA(3),QUARTA(4),QUINTA(5),SEXTA(6),SABADO(7);
3: private final int value;
4: // construtor da classe recebe os valores entre ( ) acima ...
5: // ex: na enum DOMINGO value vale 1
6: private DiasdaSemanaEnum(int value){
7: this.value= value;
8: }
9: };
Note que na linha 9 temos um ponte e virgula , ele é obrigatório , esse arquivo deve ser criado como uma classe normal java em seu próprio arquivo.
Usando enums:
Vamos ver um exemplo do uso de enum com um switch , imagine que em um arquivo criamos o enum e no outro arquivo vamos utilizar os enum da seguinte maneira :1: public class TestedeEnum {
2: /**
3: * @param args the command line arguments
4: */
5: public static void main(String[] args) {
6: // TODO code application logic here
7: DiasdaSemanaEnum dia = DiasdaSemanaEnum.QUARTA;
8: switch (dia) {
9: case DOMINGO:
10: System.out.println("bom descanso hoje é domingo");
11: break;
12: case SEGUNDA:
13: System.out.println("dia de trabalho");
14: break;
15: case TERCA:
16: System.out.println("dia de trabalho");
17: break;
18: case QUARTA:
19: System.out.println("dia de trabalho, mais tarde bola com os amigos");
20: break;
21: case QUINTA:
22: System.out.println("dia de trabalho");
23: break;
24: case SEXTA:
25: System.out.println("dia de trabalho , mas hoje tem happy hour");
26: break;
27: case SABADO:
28: System.out.println("dia de levar as crianças ao clube");
29: break;
30: default:
31: System.out.println("???");
32: break;
33: }
34: }
35: }
Note que o uso de Enum deixa o código bem mais legível para outro programador.
No caso desse código a saída na tela seria a mensagem correspondente a quarta feira .
Outro exemplo do uso de Enum:
O enum como falei é muito utilizado com o switch , veja mais esse exemplo para um menu de aplicação:
1: public enum OpcoesMenu {
2: SALVAR(1), IMPRIMIR(2), ABRIR(3), VISUALIZAR(4), FECHAR(5);
3: private final int valor;
4: OpcoesMenu(int valorOpcao){
5: valor = valorOpcao;
6: }
7: public int getValor( ){
8: return valor;
9: }
10: };
Note que usamos nesse enum um método getValor na linha 7 , esse método permite que você obtenha o valor correspondente ao cada um dos enuns declarados.
Agora com esse enum declarado poderíamos utiliza-lo da seguinte maneira:
1: public class Teste2Enum {
2: /**
3: * @param args the command line arguments
4: */
5: public static void main(String[] args) {
6: // TODO code application logic here
7: OpcoesMenu op = OpcoesMenu.ABRIR;
8: switch (op) {
9: case SALVAR:
10: System.out.println("arquivo salvo");
11: break;
12: case IMPRIMIR:
13: System.out.println("iniciando impressao");
14: break;
15: case ABRIR:
16: System.out.println("abrindo arquivo");
17: break;
18: case VISUALIZAR:
19: System.out.println("visualizando arquivo");
20: break;
21: case FECHAR:
22: System.out.println("arquivo fechado");
23: break;
24: }
25: }
26: }
Claro que isso são só exemplos didáticos, na pratica iríamos capturar um valor da interface gráfica e a partir do valor passado utilizar um dos enums declarados. O importante é que é muito simples declarar outros valores enum sem precisar alterar o código da aplicação, o que nos dá muita flexibilidade de alterar as enumerações quando necessário.
Além disso o uso de enums deixa o código muito mais simples de ler e interpretar.
Outra aplicação que já vi utilizarem por ai é utilizar enum para montar uma tabela de produtos x preços , não recomendo esse uso já que se o numero de intensa crescer o uso de enums começa a ficar complicado, para isso existem os bancos de dados :-) .
Para mais informações acesse os links abaixo.
Fontes:
http://javarevisited.blogspot.in/2011/08/enum-in-java-example-tutorial.html
http://www.devmedia.com.br/tipos-enum-no-java/25729
Comentários
Postar um comentário
Ajude o blog a melhorar comente!!!