Skip to content

Enum-uri în Java — Câmpuri, Metode și Switch

DodaTech Updated 2025-01-15 2 min read

In this tutorial, you'll learn about Enum. We cover key concepts, practical examples, and best practices.

Enum-urile în Java sunt tipuri speciale care definesc un set fix de constante denumite, putând conține câmpuri, metode și constructori, oferind mult mai multă flexibilitate decât constantele tradiționale cu int sau String.

The Problem

Constantele numerice sau string-uri pentru stări și tipuri duc la cod fragil, greu de citit și fără siguranța tipurilor la compilare. Acest quick-fix îți arată cum să folosești enum-uri pentru cod mai robust.

The Wrong Way

public static final int STATUS_ACTIVE = 1;
public static final int STATUS_INACTIVE = 2;

if (status == 1) { ... }  // ce înseamnă 1? greu de citit

The Right Way

public enum Status {
    ACTIVE,
    INACTIVE,
    PENDING
}

if (status == Status.ACTIVE) { ... }  // clar și type-safe

Step-by-Step Fix

1. Adaugă câmpuri și constructor

public enum Status {
    ACTIVE("Contul e activ"),
    INACTIVE("Contul e inactiv"),
    PENDING("Contul e în așteptare");

    private final String description;

    Status(String description) {
        this.description = description;
    }

    public String getDescription() {
        return description;
    }
}

2. Folosește enum în switch

switch (status) {
    case ACTIVE -> System.out.println("Utilizator activ");
    case INACTIVE -> System.out.println("Utilizator inactiv");
    case PENDING -> System.out.println("În așteptare");
}

3. Metode abstracte per constantă

public enum Operation {
    ADD { public int apply(int a, int b) { return a + b; } },
    SUBTRACT { public int apply(int a, int b) { return a - b; } };

    public abstract int apply(int a, int b);
}

Prevention Tips

  • Folosește enum în loc de constante int/String pentru tipuri fixe
  • Poți implementa interfețe în enum-uri
  • Enum-urile au values() și valueOf() built-in
  • Folosește EnumSet și EnumMap pentru performanță optimă cu enum-uri

Common Mistakes

  1. Compararea cu == vs equals() — pentru enum-uri, == e sigur (o singură instanță per constantă).
  2. Adăugarea de câmpuri mutable în enum — enum-urile ar trebui să fie imutabile. Declară câmpurile final.
  3. Switch fără a acoperi toate cazurile — nu apare eroare de compilare. Activează warning-urile compilatorului.

FAQ

### Ce este un enum în Java?

Un tip special care definește un set fix de constante. Fiecare constantă e o instanță a tipului enum.

Poate un enum să aibă metode?

Da, enum-urile pot avea constructori, câmpuri și metode, inclusiv metode abstracte implementate per constantă.

Cum convertesc un String la enum?

Folosește Status.valueOf("ACTIVE") care returnează Status.ACTIVE. Aruncă IllegalArgumentException dacă șirul nu e valid.

Construit de dezvoltatorii Doda Browser, DodaZIP și Durga Antivirus Pro. Instrumentele DodaTech se integrează perfect cu Java pentru productivitate și securitate sporite.

Built by the developers of DodaTech

Doda Browser, DodaZIP & Durga Antivirus Pro