Article image

RS

Rosivaldo Silva07/02/2024 20:44
Compartilhe

Funções Java: Explorando o Poder dos Enums em Java

  • #Java

Enum é um tipo de dado constante que oferece uma abordagem orientada a objetos para agrupar uma lista de constantes que estão relacionadas em um mesmo contexto no sistema. Enums foram introduzidos na versão 5 da linguagem Java, para utilização dessa funcionalidade é necessário utilizar a palavra reservada enum.

O Java é uma linguagem de programação Orientada a Objetos, ao definirmos um enum em nosso programa, estamos implicitamente utilizando o conceito de Herança. Portanto, toda enum estende a classe Enum que está no pacote java.lang.Enum. É importante perceber que um enum não pode estender nenhuma outra classe, pois em Java não é suportado a Herança Múltipla.

Em Java, a declaração de um enum é bastante simples e semelhante a declaração de uma class. No corpo do enum, podemos listar os campos e separalos por vírgula e o último campo finaliza com ponto e vírgula. Em uma enum também é possível incluir métodos se necessário. Uma prática recomendada é escrever os campos em letras maúscula, assim respeitando o padrão definido pelo Java para constantes.

public enum PaymentStatus {
  PENDING,
  PAID,
  FAILED;
}

Também podemos definir parâmetros ao declarar uma enum, proporcionando mais flexibilidade na utilização. Para isso, precisamos criar um construtor privado que recebe a quantidade de parâmetros declarados na enum, e precisamos adicionar um atributo para cada parâmetro criado.

public enum NFeStatus {
  AUTORIZADA("100"),
  CANCELADA("003");

  private final String codigo;

  NFeStatus(final String codigo) {
      this.codigo = codigo;
  }

  public String getCodigo() {
      return this.codigo;
  }
}

Ao utilizar enums, podemos criar classes que se beneficiam dessa abstração. Por exemplo, consideremos a classe Order, que possui um atributo status do tipo enum PaymentStatus e um método process() que contém a lógica de negócio para processar ou não o pedido. No código de exemplo, é criada uma lista com as definições dos enums do tipo PaymentStatus. Em seguida, é mostrado como iterar sobre a lista e exibir o nome do campo no terminal. Por fim, é utilizado o método process() do objeto Order e verifica-se se o status do pedido é igual ao valor PaymentStatus.PAID. Assim, é possível determinar se o pedido foi processado com sucesso ou não, exibindo mensagens apropriadas no terminal.

public class PaymenyService {

public static class Order {
  private PaymentStatus status;

  public Order() {
    this.status = PaymentStatus.PENDING;
  }

  public void process() {
    if (this.status.equals(PaymentStatus.FAILED))
      throw new RuntimeException("order failed, unable to process");

    this.status = PaymentStatus.PAID;
  }

  public PaymentStatus getStatus() {
    return status;
  }
}

public static void main(String[] args) {
  
  final Order newOrder = new Order();

  final List<PaymentStatus> paymentsStatus = List.of(
    PaymentStatus.PENDING,
    PaymentStatus.PAID,
    PaymentStatus.FAILED
  );

  for (final PaymentStatus paymentStatus : paymentsStatus) {
    System.out.println("Possíveis status de pagamento: " + paymentStatus.name());
  }

  newOrder.process();

  if (newOrder.status.equals(paymentsStatus.PAID))
    System.out.println("Order " + newOrder.getStatus());
  else
    System.out.println("Order " + newOrder.getStatus());
}

}

Essa abordagem com enums no Java proporciona uma maneira clara e eficiente de lidar com constantes agrupadas, tornando o desenvolvimento de sistemas mais organizado e legível.

Referência

Rosivaldo Lucas,

Estudante de Engenharia de Computação

Compartilhe
Comentários (0)