En

Enums em Java

12 exercícios

Sobre Enums

Um tipo enum é um tipo de dado especial que permite que uma variável seja um conjunto de constantes predefinidas. A variável precisa ser igual a um dos valores predefinidos para ela. Exemplos comuns incluem direções de bússola (valores de NORTH, SOUTH, EAST e WEST) e os dias da semana.

Como são constantes, os nomes dos campos de um tipo enum são escritos em letras maiúsculas.

Definindo um tipo enum

Na linguagem de programação Java, você define um tipo enum usando a palavra-chave enum. Por exemplo, você especificaria um tipo enum dos dias da semana assim:

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Você deve usar tipos enum sempre que precisar representar um conjunto fixo de constantes. Isso inclui tipos enum naturais, como os planetas do nosso sistema solar, e conjuntos de dados em que você conhece todos os valores possíveis em tempo de compilação, por exemplo, as opções de um menu, flags de linha de comando e assim por diante.

Usando um tipo enum

Aqui está um código que mostra como usar o enum DayOfWeek definido acima:

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Adicionando métodos e campos

Os tipos enum da linguagem de programação Java são muito mais poderosos do que seus equivalentes em outras linguagens. A declaração enum define uma classe (chamada de tipo enum). O corpo da classe enum pode incluir métodos e outros campos:

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

Chamando o método getNumberOfStars em um membro do tipo enum Rating:

Rating.GOOD.getNumberOfStars();
// => 4

Métodos integrados

O compilador adiciona automaticamente alguns métodos especiais quando cria um enum.

Por exemplo, eles têm um método estático values que retorna um array contendo todos os valores do enum na ordem em que são declarados:

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

O trecho acima imprimiria o seguinte:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

O compilador também adiciona um método estático valueOf que retorna um membro do enum com base no seu nome:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Editar via GitHub O link abre em uma nova janela ou aba

Aprenda Enums