Uso de enum em Java

Publicado por Fagner Amaral de Souza Candido (última atualização em 01/02/2011)

[ Hits: 12.012 ]

Homepage: https://github.com/fagnercandido

Download Sexo.java




Olá PessoALL,

Recentemente estive estudando para a certificação Java. E durante esta jornada, que não será nada fácil, me deparei com diversos recursos que ainda não havia utilizado. Dentre eles, vou citar o enum.

enum foi adicionado ao Java 5, portanto, qualquer versão do compilador anterior a 5, o programa irá tratar enum como se fosse um identificador. Para suprir uma gama interessante de problemas, o mais notável é o anti-pattern "constant interface", enum foi adicionado para sanar tais problemas. Este anti-pattern é bem simples: Declara-se interfaces de constantes e pronto! Além de ficar estranho, a classe, geralmente não uso faz de todas essas constantes.

O enum permite resolver isso de forma elegante. Além disso, enum traz consigo alguns recursos legais. Como por exemplo, valores que pode ser colocados no mesmo.

Abaixo segue alguns exemplos de uso.

Qualquer dúvida, sugestão ou crítica serão bem-vindos,

Fagner Candido
f_Candido
@fagner_candido
fagner7777777@gmail.com

  



Esconder código-fonte

/*
   Síntese
      Objetivo : Manipular Enum
      Entrada :
      Saída : Prints do Enum
      Autor : f_Candido   <fagner7777777@gmail.com>   @fagner_candido
*/

// Declaração do Enum
public enum Sexo{
   M("Masculino"), F("Feminino");
   
   private String sexo;

   Sexo(String sexo){
      this.sexo = sexo;
   }

   public String getSexo(){return this.sexo;}

}

class Principal{

   public static void main(String []args){
      // Posicao ordinal do Enum
      System.out.println(Sexo.M.ordinal());
      // Valor do Enum
      System.out.println(Enum.valueOf(Sexo.class, "M"));

   }

}

Scripts recomendados

achar a raiz da equação do 2º

Existência de triângulo, em Java

Fatorial Recursivo em Java

Separador de algarismos

Calculadora em java


  

Comentários
[1] Comentário enviado por removido em 04/02/2011 - 15:56h

Enums são úteis em vários aspectos, principalmente quando usados como bitwise enums, como no exemplo bem simples abaixo:

public class Cliente {
public Cliente(String nome, int formaPagamento){
setNome(nome);
setFormaPagamento(formaPagamento);
}
private String nome;
private int formaPagamento;
public void setNome(String nome) {
this.nome = nome;
}
public String getNome() {
return nome;
}
public void setFormaPagamento(int formaPagamento) {
this.formaPagamento = formaPagamento;
}
public int getFormaPagamento() {
return formaPagamento;
}
}

public enum Opcoes {
none(0),
cheque(1),
cartao(2),
dinheiro(4);

private int opcao;

Opcoes(int opcao) {
this.opcao = opcao;
}

public int getOpcao(){
return this.opcao;
}
}

public class Teste {
public static void main(String[] args){
Cliente c = new Cliente("Void", 7);
String msg ;
if(c.getFormaPagamento() == Opcoes.cheque.getOpcao())
msg = "Cheque";
else if (c.getFormaPagamento() == Opcoes.cartao.getOpcao())
msg = "Cartão";
else if (c.getFormaPagamento() == Opcoes.dinheiro.getOpcao())
msg = "Dinheiro";
else if(c.getFormaPagamento() == (Opcoes.cartao.getOpcao() | Opcoes.cheque.getOpcao()))
msg = "Cartão e Cheque";
else if (c.getFormaPagamento() == (Opcoes.cartao.getOpcao() | Opcoes.dinheiro.getOpcao()))
msg = "Cartão e Dinheiro";
else if (c.getFormaPagamento() == (Opcoes.cheque.getOpcao() | Opcoes.dinheiro.getOpcao()))
msg = "Cheque e Dinheiro";
else if (c.getFormaPagamento() == (Opcoes.cheque.getOpcao() | Opcoes.dinheiro.getOpcao() | Opcoes.cartao.getOpcao()))
msg = "Cheque, Cartão e Dinheiro";
else
msg = "Nenhuma";
System.out.println("Paga com " + msg + "!");
}
}


[2] Comentário enviado por f_Candido em 04/02/2011 - 21:17h

Opa,

Agradeço o comentário.

Obrigado...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts