# Java Enums: Criar constantes em códigos

Classes Java Enums permitem a criação de variáveis com valores predefinidos. Essas variáveis sempre devem ser escritas com letras maiúsculas e não podem ser alteradas posteriormente. Elas servem para deixar códigos mais lógicos e legíveis, contribuindo para o desenvolvimento de [códigos limpos](https://www.ionos.com/digitalguide/websites/web-development/clean-code-principles-advantages-and-examples/ "Códigos limpos: Princípios, vantagens e exemplos").

## O que são Java Enums?

O termo Java Enums faz referência a um [tipo de dado em Java](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/java-data-types/) que pode ser usado em uma classe tradicional, mas tem uma diferença importante em relação a outros tipos de dados. Uma Enum é uma espécie de variável que possui **opções predefinidas, fixas e limitadas de valores**. Java Enums são **constantes** que evitam que valores indesejados sejam usados em um código. Isso assegura a estrutura lógica do código e facilita a leitura. O termo “Enum” vem da palavra em inglês enumeration, que significa enumerar.

## Sintaxe de Java Enums

A sintaxe das classes Java Enums é sempre como no exemplo abaixo:

```java
enum Nome_da_Classe {
	VALOR1,
	VALOR2,
	VALOR3
}
```

Quando você quiser definir essa classe, comece usando a palavra-chave `enum` ao invés de `class` ou `interface`. Depois dela, nomeie uma classe especial e defina as constantes permitidas dentro das chaves. Ao fazer isso, **escreva sempre os nomes das constantes em letras maiúsculas** e separados uns dos outros por vírgulas.

## Exemplo de Java Enums

Um bom exemplo do uso de Java Enums é uma lista de meses. Essa lista contém apenas doze valores possíveis que devem ser criados como constantes. Portanto, quando uma variável do tipo “Meses” for necessária futuramente, somente os valores constantes serão permitidos. No código, esse exemplo ficaria assim:

```java
enum Meses {
	JANEIRO,
	FEVEREIRO,
	MARCO,
	ABRIL,
	MAIO,
	JUNHO,
	JULHO,
	AGOSTO,
	SETEMBRO,
	OUTUBRO,
	NOVEMBRO,
	DEZEMBRO
}
```

Depois disso, para declarar uma variável do tipo “Meses”, indique seu valor e use o [comando Java](https://www.ionos.com/digitalguide/websites/web-development/java-commands/ "Comandos em Java") `System.out.println` para exibir:

```java
public class Main {
	public static void main(String[] args) {
Meses mes = Meses.ABRIL;
System.out.println(mes);
	}
}
```

## Java Enums dentro de uma classe

Você também pode usar Java Enums dentro de uma classe. No exemplo acima, isso ficaria assim:

```java
public class Main {
	enum Meses {
	JANEIRO,
	FEVEREIRO,
	MARCO,
	ABRIL,
	MAIO,
	JUNHO,
	JULHO,
	AGOSTO,
	SETEMBRO,
	OUTUBRO,
	NOVEMBRO,
	DEZEMBRO
}
		public static void main(String[] args) {
Meses mes = Meses.ABRIL;
System.out.println(mes);
		}
}
```

## Java Enums e `values()` para consultar todas as constantes

Se você quiser exibir todos os valores disponíveis, use o método `values()`. Ele mostra as constantes organizadas em um array. Para o nosso exemplo, o código seria o seguinte:

```java
enum Meses {
	JANEIRO,
	FEVEREIRO,
	MARCO,
	ABRIL,
	MAIO,
	JUNHO,
	JULHO,
	AGOSTO,
	SETEMBRO,
	OUTUBRO,
	NOVEMBRO,
	DEZEMBRO
}
public class Main {
	public static void main(String[] args) {
for (Meses mes : Meses.values()) {
System.out.println(mes);
		}
	}
}
```

## Java Enums com switch

Outra possibilidade de uso é combinar as Java Enums com outros métodos. Em combinação com `switch()`, o código ficaria assim:

```java
enum Meses {
    JANEIRO,
    FEVEREIRO,
    MARCO,
    ABRIL,
    MAIO,
    JUNHO,
    JULHO,
    AGOSTO,
    SETEMBRO,
    OUTUBRO,
    NOVEMBRO,
    DEZEMBRO
}
public class Main {
    public static void main(String[] args) {
    	Meses mes = Meses.ABRIL;
switch (mes) {
case ABRIL:
System.out.println("O clube está fechado.");
break;
case MAIO:
System.out.println("O clube está fechado.");
break;
case JUNHO:
System.out.println("O clube terá prazer em receber você!");
break;
// Você pode adicionar casos para todos os meses.
    	}
    }
}
```


This is a markdown version of: [https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/java-enums/](https://www.ionos.com/pt-br/digitalguide/sites-de-internet/desenvolvimento-web/java-enums/) for AI/LLM consumption.