Fácil Java

Enum simples com método

Enunciado

Crie um enum NivelAcesso com as constantes ADMIN, USUARIO e CONVIDADO. Cada constante deve ter um campo nivel (int) e um método getNivel(). No main, percorra todas as constantes com values() e imprima nome - nivel.

Requisitos

  • O enum deve ter um campo nivel e um construtor que o inicializa.
  • O método getNivel() deve retornar o valor do campo.
  • O main deve usar values() para percorrer e imprimir todas as constantes.

Código inicial

public class ExercicioEnum {
    enum NivelAcesso {
        // TODO: defina as constantes com seus níveis
    }

    public static void main(String[] args) {
        // TODO: percorra e imprima
    }
}

Saída esperada

ADMIN - 3
USUARIO - 2
CONVIDADO - 1
Ver dica

No enum, defina as constantes passando o valor no construtor: ADMIN(3). Use um loop for (NivelAcesso n : NivelAcesso.values()).

Mostrar solução
public class ExercicioEnum {
    enum NivelAcesso {
        ADMIN(3),
        USUARIO(2),
        CONVIDADO(1);

        private final int nivel;

        NivelAcesso(int nivel) {
            this.nivel = nivel;
        }

        public int getNivel() {
            return nivel;
        }
    }

    public static void main(String[] args) {
        for (NivelAcesso n : NivelAcesso.values()) {
            System.out.println(n + " - " + n.getNivel());
        }
    }
}

Passo a passo

  1. Declaramos o enum NivelAcesso com três constantes: ADMIN, USUARIO e CONVIDADO.
  2. Cada constante recebe um valor inteiro entre parênteses, que será passado ao construtor.
  3. O construtor NivelAcesso(int nivel) armazena o valor no campo nivel.
  4. O método getNivel() expõe o valor para ser lido externamente.
  5. No main, usamos NivelAcesso.values() para obter um array com todas as constantes.
  6. O loop for percorre esse array e imprime o nome da constante seguido do nível.

Por que funciona

Cada constante de um enum é uma instância única da classe enum. Ao definir um construtor, podemos associar dados a cada instância. O método values() é gerado automaticamente pelo compilador e retorna as constantes na ordem de declaração, permitindo iteração simples.

Erros comuns

  • Esquecer o ponto e vírgula após a última constante antes de declarar campos: CONVIDADO(1) sem ; gera erro de compilação.
  • Tentar acessar nivel diretamente de fora: o campo é privado; use getNivel().
  • Declarar o construtor como public desnecessariamente: em enums, o construtor é implicitamente privado.

Outra forma de resolver

Se não precisar de valores associados, pode usar um enum simples e um switch para obter o nível:

enum NivelAcesso { ADMIN, USUARIO, CONVIDADO }
// ...
int nivel = switch (n) {
    case ADMIN -> 3;
    case USUARIO -> 2;
    case CONVIDADO -> 1;
};

Essa abordagem é preferível quando os dados são derivados apenas do nome e não há muitos campos.

Saída esperada

ADMIN - 3
USUARIO - 2
CONVIDADO - 1