Pular para o conteúdo principal

Java Enum: o que é, pra que serve e como utilizar.

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 :

  1. Enum é type safe você não pode atribuir qualquer outra coisa que não seja uma constante para uma java Enum. 
  2. Enum tem seu proprio name-space. 
  3. 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. 
  4. Adição de novas constantes Enum em Java é fácil, você pode adicionar novas constantes, sem quebrar o código existente. 
  5. 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); 
  6. Não é permitido criar novas instâncias com a palavra chave new; 
  7. O construtor é declarado private, embora não precise de modificador private explícito; 
  8. Seguindo a convenção, por serem objetos constantes e imutáveis (static final), os nomes declarados recebem todas as letras em MAIÚSCULAS; 
  9. As instâncias dos tipos enum devem obrigatoriamente ter apenas um nome; 
  10. 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

Postagens mais visitadas deste blog

Video Aulas de Java já disponíveis no 4Shared

Turma segue as video aulas já disponíveis para download no 4Shared , espero que vocês gostem das aulas e por favor postem um comentario no blog dizendo o que vc's acharam preciso desse feed back para o constante aprimoramento das aulas . Basta escolher o arquivo clickar  no link para download ( tenha paciencia os arquivos são grandes ) <p>&lt;p&gt;&amp;amp;amp;amp;lt;p&amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;br&amp;amp;amp;amp;amp;amp;amp;gt;se&amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;gt;&lt;/p&gt;</p> Se a Janela de Download acima não funcionar tente acessar os arquivos usando o seguinte link http://www.4shared.com/dir/34812571/bf01348d/VideoAulas.html Bom estudo  :-)

Notícias da UFSC » UFSC é segunda universidade brasileira melhor colocada no Webometrics

Notícias da UFSC » UFSC é segunda universidade brasileira melhor colocada no Webometrics : A Universidade Federal de Santa Catarina passou à segunda instituição brasileira melhor qualificada no  Ranking Web of World Universities , sendo a primeira universidade federal brasileira no levantamento . No primeiro lugar geral se mantém a USP. No ranking passado, publicado no mês de janeiro, a UFSC ocupava a quarta posição. Na classificação para a América Latina, em que figurava como quinta universidade,  passou a terceira colocada. E no ranking mundial está entre as cem universidades do mundo: subiu da 129ª posição para a 98ª. Harvard University, Massachusetts Institute of Technology e Stanford University se mantêm no topoda classificação mundial. Entre as brasileiras, lideram aUniversidade de São Paulo (USP), UFSC e Universidade Estadual de Campinas (Unicamp)

Serialização de objetos I - Salvando objetos em arquivos

Serialização: como salvar seus objetos Java par utilizar quando precisar  Serialização de objetos é a possibilidade de salvar uma cópia completa de um objeto ou de uma coleção de objetos em um fluxo de saída (arquivo externo), de modo que o objeto pode ser recriado a partir da cópia serializada  quando necessário . A serialização de objetos Java,  fornece um recurso para transformar um grupo ou um único objeto em um fluxo de bits, ou um array de bytes para armazenar ou enviar pela rede,  de modo que o  referido fluxo de bits ou uma matriz de bytes pode ser transformado novamente em objetos Java. O processo de serialização também é conhecido como marshaling de um objeto, e de-serialização é conhecido como un-marshaling. Assim a serialização oferece os seguintes benefícios: Um sistema para persistência de objetos, ou seja, escrever as suas propriedades em arquivos externos ou discos, ou salvá-las em um banco de dados. Um sistema para chamadas d...