Percursos
/
Java
Java
/
Programa
/
Enumerações
En

Enumerações em Java

12 exercícios

Sobre Enumerações

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

Como são constantes, os nomes dos campos de um tipo enum escrevem-se em maiúsculas.

Definir um tipo enum

Na linguagem de programação Java, defines um tipo enum com a palavra-chave enum. Por exemplo, um tipo enum com os dias da semana seria assim:

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

Deves usar tipos enum sempre que precisares de representar um conjunto fixo de constantes. Isso inclui tipos enum naturais, como os planetas do nosso sistema solar, e conjuntos de dados em que conheces todos os valores possíveis em tempo de compilação: por exemplo, as opções de um menu, as opções da linha de comandos, etc.

Utilizar um tipo enum

Este código 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"

Adicionar métodos e campos

Os tipos enum da linguagem de programação Java são muito mais poderosos do que os equivalentes noutras linguagens. A declaração enum define uma classe (a que se chama 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;
    }
}

Chamar o método getNumberOfStars a um membro do tipo enum Rating:

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

Métodos incorporados

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

Por exemplo, têm um método estático values que devolve um array com todos os valores do enum, pela ordem em que são declarados:

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

O excerto acima imprime o seguinte:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

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

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Editar via GitHub A ligação abre numa nova janela ou separador

Aprende Enumerações