-
Notifications
You must be signed in to change notification settings - Fork 0
2.5 Use enumerated types
Weverton edited this page Aug 31, 2016
·
12 revisions
Lembretes:
- Construtor para enum só é permitido private;
- Um enum herda de java.lang.Enum, sendo assim não pode herdar de outras classes;
- Um enum pode implementar interfaces;
- Um enum não pode ser definido dentro de método ou construtor;
- Um enum pode ser definido como um membro static de uma classe;
- Uma classe pode ter multiplos public enum dentro dela;
Na label do switch deve ser utilizado o unqualified name no enum.
public class Teste10 {
public static void main(String[] args) {
Switch s = Switch.OFF;
switch (s) {
case Switch.OFF: // Deve ser utilizado somente o OFF
System.out.println("It is off!");
break;
}
}
}
enum Switch {
ON, OFF
}
Exemplo de enum:
enum Title {
MR("Mr. "), MRS("Mrs. "), MS("Ms. ");
private String title;
private Title(String s) {
title = s;
}
public String format(String first, String last) {
return title + " " + first + " " + last;
}
}
Invalido, não pode chamar o método format devido o mesmo não ser static.
class TestClass {
void someMethod() {
System.out.println(Title.format("Rob", "Miller"));
}
}
Isso não pode:
class TestClass {
void someMethod() {
Title.DR dr = new Title.DR("Dr. ");
}
}
Em um enum não é permitido acessar um non-final static field no construtor.
enum Pets {
DOG("D"), CAT("C"), FISH("F");
static String prefix = "I am ";
String name;
Pets(String s) {
name = prefix + s; //Erro de compilação
}
public String getData(){ return name; }
}
Como o enum e a class são public, eles devem ser definidos em arquivos com os seus respectivos nomes.
Abaixo isso no mesmo arquivo não compila.
public enum EnumA{ A, AA, AAA };
public class TestClass {}