Java: Enum

Z MiS
Přejít na: navigace, hledání


Obsah

K čemu je?

Příklady využití výčtového typu
  • Dny v týdnu
  • Pohlaví
  • Typy platby (zde zvážíme, zda radši nepoužít samostatnou třídu s podtřídami)


Deklarace výčtového typu

public enum Pohlavi {
    Muz, Zena, Neuvedeno
}

Vytvoření proměnné

Pohlavi pohlavi = Pohlavi.Muz;


Použití výčtového typu

switch (pohlavi) {
    case Pohlavi.Muz: 
        ...
        break;
    case Pohlavi.Zena:
        ...
        break;
    case Pohlavi.Neuvedeno:
        ...
        break;
}
if (pohlavi == Pohlavi.Muz) {...}


Šlo by situaci řešit jinak?

Samostatná třída

Složitější deklarace:

public abstract class TypPlatby {
    static TypPlatby Hotove = new TypPlatbyHotove();
    static TypPlatby NaUcet = new TypPlatbyNaUcet();
    
    private TypPlatby() {} // Aby si nikdo nemohl svévolně vytvářet nové typy platby

    public abstract void provedPlatbu();
}
public class TypPlatbyHotove extends TypPlatby {
    public void provedPlatbu() {
        ...
    }
}
public class TypPlatbyNaUcet extends TypPlatby {
    public void provedPlatbu() {
        ...
    }
}

Obdobné vytvoření proměnné:

TypPlatby typPlatby = TypPlatby.Hotove;

A jednoduché použití:

typPlatby.provedPlatbu();

Jednoduchoučká deklarace

public enum TypPlatby { Hotove, NaUcet };  

Obdobné vytvoření proměnné:

TypPlatby typPlatby = TypPlatby.Hotove;

Ale při každém použití pak velký nepřehledný kód (zvláště pokud bude variant placení více a kód platby delší):

switch (typPlatby) {
    case TypPlatby.Hotove:
        ...
        break;
    case TypPlatby.NaUcet:
        ...
        break;
};

Náhrada typem int nebo String


Zdroje

Osobní nástroje
Jmenné prostory
Varianty
Akce
Výuka
Navigace
Nástroje