Kurzusok
/
Java
Java
/
Tanterv
/
Felsorolások
Fe

Felsorolások ebben a kurzusban: Java

12 feladat

A(z) Felsorolások fogalomról

Az enum típus egy különleges adattípus, amely lehetővé teszi, hogy egy változó előre definiált konstansok halmazából vegyen fel értéket. A változónak meg kell egyeznie az egyik előre definiált értékkel. Gyakori példák az égtájak (NORTH, SOUTH, EAST és WEST értékei) és a hét napjai.

Mivel konstansokról van szó, az enum típus mezőinek nevét csupa nagybetűvel írjuk.

Enum típus definiálása

A Java programozási nyelvben az enum kulcsszóval definiálhatsz enum típust. Egy hét napjait leíró enum típust például így adsz meg:

public enum DayOfWeek {
    SUNDAY,
    MONDAY,
    TUESDAY,
    WEDNESDAY,
    THURSDAY,
    FRIDAY,
    SATURDAY
}

Mindig enum típust érdemes használnod, amikor konstansok rögzített halmazát szeretnéd reprezentálni. Ide tartoznak a természetes enum típusok, például a Naprendszer bolygói, valamint az olyan adathalmazok, amelyeknél fordítási időben ismered az összes lehetséges értéket - például egy menü választási lehetőségei, parancssori kapcsolók és így tovább.

Enum típus használata

Az alábbi kód megmutatja, hogyan használhatod a fent definiált DayOfWeek enumot:

public class Shop {
    public String getOpeningHours(DayOfWeek dayOfWeek) {
        switch (dayOfWeek) {
            case MONDAY:
            case TUESDAY:
            case WEDNESDAY:
            case THURSDAY:
            case FRIDAY:
                return "9am - 5pm";
            case SATURDAY:
                return "10am - 4pm"
            case SUNDAY:
                return "Closed.";
        }
    }
}
var shop = new Shop();
shop.getOpeningHours(DayOfWeek.WEDNESDAY);
// => "9am - 5pm"

Metódusok és mezők hozzáadása

A Java programozási nyelv enum típusai sokkal erősebbek, mint más nyelvek megfelelői. Az enum deklaráció egy osztályt definiál (amit enum típusnak nevezünk). Az enum osztály törzse metódusokat és további mezőket tartalmazhat:

public enum Rating {
    GREAT(5),
    GOOD(4),
    OK(3),
    BAD(2),
    TERRIBLE(1);

    private final int numberOfStars;

    Rating(int numberOfStars) {
        this.numberOfStars = numberOfStars;
    }

    public int getNumberOfStars() {
        return this.numberOfStars;
    }
}

A getNumberOfStars metódus meghívása a Rating enum típus egyik tagján:

Rating.GOOD.getNumberOfStars();
// => 4

Beépített metódusok

A fordító automatikusan hozzáad néhány különleges metódust, amikor létrehoz egy enumot.

Például rendelkeznek egy statikus values metódussal, amely egy tömböt ad vissza, benne az enum összes értékével, a deklaráció sorrendjében:

for (DayOfWeek dayOfWeek : DayOfWeek.values()) {
    System.out.println(dayOfWeek.toString());
}

A fenti kódrészlet a következőt írja ki:

SUNDAY
MONDAY
TUESDAY
WEDNESDAY
THURSDAY
FRIDAY
SATURDAY

A fordító emellett egy statikus valueOf metódust is hozzáad, amely a neve alapján adja vissza az enum egyik tagját:

DayOfWeek.valueOf("SUNDAY");
// => DayOfWeek.SUNDAY
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg

Tanuld meg a(z) Felsorolások fogalmat