lucianodacunha.net

terça-feira, 7 de fevereiro de 2012

Enums em Java

O enum é uma lista enumerada que permite a restrição de um conjunto de constantes. Pode ser considerado uma classe, sendo que poderá ser declarado somente como público, ou default. Perceba que nenhuma das classes foram declaradas como public, assim, é possível declarar várias no mesmo arquivo, sendo todas as classes com nomes diferentes do nome do arquivo.

Estrutura (Código abaixo):
  • palavra-chave: enum
  • Nome do enum (classe): EnumForaDaClasse
  • Constantes: VALOR1, ...
Observe o código abaixo:


/**
 * Nome do arquivo: Enums.java
 *
 */

enum EnumForaDaClasse {

 VALOR1, VALOR2, VALOR3
}

class ClasseComEnum {

 enum EnumDentroDaClasse { VALOR1, VALOR2, VALOR3 }

 EnumDentroDaClasse enumDentroDaClasse;

}

class EnumsTest {

 EnumForaDaClasse enum1;
 ClasseComEnum enum2;

 { enum2 = new ClasseComEnum(); }

 public static void main(String[] args){

  EnumsTest e1 = new EnumsTest();

  e1.enum1 = EnumForaDaClasse.VALOR1;
  e1.enum2.enumDentroDaClasse = ClasseComEnum.EnumDentroDaClasse.VALOR1;

  System.out.println("Valor de e1.enum1: " + e1.enum1);
  System.out.println("e1.enum1 instancia de " +
   "EnumForaDaClasse: " + (e1.enum1 instanceof EnumForaDaClasse));

 }

}

No código acima, a classe EnumsTest declara duas variáveis de instância, sendo:
  • EnumForaDaClasse enum1: Uma variável de instância, que é um enum do tipo EnumForaDaClasse. Declarando uma variável desse tipo, poderemos atribuir a ela, qualquer um dos valores definidos dentro de suas chaves. Esse tipo é visível e acessado diretamente. Basta declarar uma variável do tipo do enum desejado e atribuir um dos valores declarados no enum, acessando-o através do operador '.' (ponto).
  • ClasseComEnum enum2: Uma variável de instância que é do tipo ClasseComEnum. Quando um enum é declarado dentro de uma classe, não é possível declarar uma variável do seu valor diretamente, pois é necessário primeiramente instânciar a classe, e somente depois acessar o enum através de uma variável de instância declarada lá dentro.
Como toda a classe, o enum poderá ainda ter outros membros além das constantes, como variáveis e métodos.

Uma outra observação é que as constantes do enum podem ser considerados como instâncias da classe que as comportam.

Assim, VALOR1 é uma instância de EnumCompleto. Mais um motivo pelo qual um enum pode possuir variáveis e métodos. Desta forma, quando olhar a classe ou o enum abaixo, considere que a constante VALOR1 é uma instância de EnumCompleto que possui:
  • Uma variável de instância: chamada valor, do tipo inteiro.
  • Um construtor: que recebe um valor inteiro e inicializa a variável de instância.
  • E um método: que retorna um valor inteiro, a variável de instância.
enum EnumCompleto {

 VALOR1(42), VALOR2(21), VALOR3(84);

 EnumCompleto(int valor){

  this.valor = valor;

 }

 private int valor;

 public int getValor(){

  return this.valor;

 }

}

class TestaEnumCompleto{

 EnumCompleto ec;

 public static void main(String[] args){

  TestaEnumCompleto tec = new TestaEnumCompleto();
  tec.ec = EnumCompleto.VALOR2;

  // Imprimindo o enum.
  System.out.println("Valor do enum: " + tec.ec);

  // Testa a instância.
  System.out.println("instancia de EnumForaDaClasse: " +
   (tec.ec instanceof EnumCompleto));

  // Acessando sua variável de instância.
  System.out.println("Variavel de instancia de ec: " +
   tec.ec.getValor());

 }

}

Até mais, []'s.

Marcadores:

0 Comentários:

Postar um comentário

Assinar Postar comentários [Atom]



<$I18N$LinksToThisPost>:

Criar um link

<< Página inicial