Výčty Java


Výčty

An enumje speciální "třída", která představuje skupinu konstant (neměnných proměnných, jako jsou finalproměnné).

Chcete-li vytvořit enum, použijte enumklíčové slovo (místo třídy nebo rozhraní) a oddělte konstanty čárkou. Všimněte si, že by měly být velkými písmeny:

Příklad

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

enumKe konstantám můžete přistupovat pomocí syntaxe tečky :

Level myVar = Level.MEDIUM;

Enum je zkratka pro „enumerations“, což znamená „konkrétně uvedené“.


Enum uvnitř třídy

Můžete mít také enumvnitřní třídu:

Příklad

public class Main {
  enum Level {
    LOW,
    MEDIUM,
    HIGH
  }

  public static void main(String[] args) {
    Level myVar = Level.MEDIUM; 
    System.out.println(myVar);
  }
}

Výstupem bude:

MEDIUM

Enum v příkazu Switch

Výčty se často používají v switchpříkazech ke kontrole odpovídajících hodnot:

Příklad

enum Level {
  LOW,
  MEDIUM,
  HIGH
}

public class Main {
  public static void main(String[] args) {
    Level myVar = Level.MEDIUM;

    switch(myVar) {
      case LOW:
        System.out.println("Low level");
        break;
      case MEDIUM:
         System.out.println("Medium level");
        break;
      case HIGH:
        System.out.println("High level");
        break;
    }
  }
}

Výstupem bude:

Medium level

Smyčka přes Enum

Typ enum má values()metodu, která vrací pole všech konstant enum. Tato metoda je užitečná, když chcete procházet konstanty výčtu:

Příklad

for (Level myVar : Level.values()) {
  System.out.println(myVar);
}

Výstupem bude:

LOW
MEDIUM
HIGH

Rozdíl mezi výčty a třídami

Plechovka enum, stejně jako class, má atributy a metody. Jediný rozdíl je v tom, že výčtové konstanty jsou public, statica final (nezměnitelné - nelze je přepsat).

An enumnelze použít k vytváření objektů a nemůže rozšířit další třídy (ale může implementovat rozhraní).

Proč a kdy používat výčty?

Výčty použijte, pokud máte hodnoty, o kterých víte, že se nezmění, jako jsou měsíční dny, dny, barvy, balíček karet atd.