Enum é um tipo cujos campos consistem em um conjunto fixo de constantes. Com são constantes, para seguirmos a padronização, os valores são escritos em maiúsculas. Um exemplo comum de um tipo enumerado são os pontos cardeais, cores, dias da semana.
Para definir um tipo enumerado, usamos a palavra chave enum, como no exemplo abaixo:
public enum DiasDaSemana {
DOMINGO, SEGUNDA, TERÇA, QUARTA, QUINTA, SEXTA, SABADO
}
Por que nossos exemplos irão funcionar? Quando temos uma declaração enum como a acima, na verdade estamos extendendo a classe java.lang.Enum. A classe Enum pode incluir métodos e outros atributos. O compilador automaticamente adiciona alguns métodos quando cria um enum.
De String para Enum
As classes Enum possuem por default um método valueOf(String value) que pega o parâmetro e converte em um enum. Vamos testar uma enumeração normal:public class EnumTest1 {
private enum PTCARDEAL { NORTE, SUL, LESTE, OESTE }
public static void main(String[] args) {
//Mostra a conversão
PTCARDEAL norte = PTCARDEAL.valueOf("NORTE");
System.out.println(norte);
PTCARDEAL sul = PTCARDEAL.valueOf("SUL");
System.out.println(sul);
PTCARDEAL leste = PTCARDEAL.valueOf("LESTE");
System.out.println(leste);
}
}
A saída para este programa já e muito mais bacana do que conseguiríamos no Delphi:
Podemos alterar os valores retornados como string sobrepondo as definições toString() para cada valor da enumeração. Vejamos o nosso exemplo original alterado:
public class EnumTest2 {
private enum PTCARDEAL {
/*
* texto do poema "Sou quatro pontos cardeais"
* http://poesiaoriginalissima.blogspot.com.br/2010/01/sou-quatro-pontos-cardeais.html
*/
NORTE {
@Override
public String toString() {
return "Norte é vida verde na terra…meu consciente";
}
},
SUL {
@Override
public String toString() {
return "Sul é água volta e revolta…num vario extenso";
}
},
LESTE {
@Override
public String toString() {
return "Este é cada aurora incluída neste dia\n"+
"Acordo e penso: num sobressalto";
}
},
OESTE {
@Override
public String toString() {
return "Oeste…a certeza do presente";
}
}
}
public static void main(String[] args) {
//Mostra a conversão
PTCARDEAL norte = PTCARDEAL.valueOf("NORTE");
System.out.println(norte);
PTCARDEAL sul = PTCARDEAL.valueOf("SUL");
System.out.println(sul);
PTCARDEAL leste = PTCARDEAL.valueOf("LESTE");
System.out.println(leste);
}
}
A saída deste programa é:
Vamos utilizar a mesma classe de EnumTest2 alterando
somente o método main().
Conseguimos com isto retornar os mesmos valores que em EnumTest1public static void main(String[] args) {
// Exemplo
String norte = PTCARDEAL.NORTE.name();
System.out.println(norte);
String sul = PTCARDEAL.SUL.name();
System.out.println(sul);
String leste = PTCARDEAL.LESTE.name();
System.out.println(leste);
}
Para o exemplo usamos Enum.name() que retorna o nome da constante enumerada exatamente como foi declarada.
Nenhum comentário:
Postar um comentário