Fala galera,
diretamente de Brasília com mais uma postagem arroz com feijão. Hoje, aproveitando que voltei a estudar para certificação (antiga SCJP) vou falar um pouco sobre Enum.
O Enum é um recurso disponibilizado a partir da versão 1.5 do Java (ou Java 5), que veio para limitar uma determinada faixa de valores para variáveis. Ou seja, uma lista com valores pré-definidos.
Alguns descrevem como um tipo de classe especial, eu gosto de dizer que ele é uma lista de constantes. Porém não sei se o termo é correto.
A declaração básica de um Enum é parecida com a de uma classe e deve ser feita da seguinte forma:
enum <nome da variável> { valor 1, valor 2, …, valor n}.
Tal como exemplo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
//declaração de Enum enum TamanhoRefrigerante { PEQUENO, MEDIO, GRANDE} ; //aqui a classe do Refrigerante public class Refrigerante{ TamanhoRefrigerante tamanho; } //aqui vamos testar o exemplo public class Teste{ public static void main(String[] args){ Refrigerante refri = new Refrigerante(); refri.tamanho = TamanhoRefrigerante.MEDIO; } } |
Podemos declarará-los fora de classes como mostrado acima ou dentro de classes conforme abaixo:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//classe Refrigerante com a declaração do enum public class Refrigerante{ enum TamanhoRefrigerante {PEQUENO, MEDIO, GRANDE} TamanhoRefrigerante tamanho; } // e aqui utilizamos os tamanhos pré-definidos public class Teste{ public static void main(String[] args){ Refrigerante refri = new Refrigerante(); refri.tamanho = TamanhoRefrigerante.MEDIO; } } |
Perceberam alguma diferença na declaração do Enum no primeiro e segundo exemplo? Não? O ponto-e-vírgula no fim da declaração é opcional, então muito cuidado, isso pode valer uma questão na sua prova de certificação.
Apesar de podermos declará-los dentro ou fora de classes, eles são proibidos dentro de métodos e o compilador gritará de raiva caso você faça isso. O enum se declarado em um arquivo a parte, deve seguir as mesmas regras de uma classe, ou seja, nome do Enum é o mesmo nome do arquivo. No nosso caso é o TamanhoRefrigerante.java.
Enums não podem ser instanciados (não daria para usar o new TamanhoRefrigerante()) e são acessados estaticamente através do nome.CONSTANTE;
Um enum possui um método values() pelo qual é possível iterar seus valores pré-definidos.
Bom pessoal, essa foi só uma introdução ao assunto. Ainda tenho muito mais a acrescentar como falar de sobrecarga de construtores e mais, porém fica para uma próxima postagem. Por ora é o suficiente.
Abraços.