• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Enum w Javie - switch case

Object Storage Arubacloud
0 głosów
495 wizyt
pytanie zadane 14 sierpnia 2018 w Java przez periedynek Obywatel (1,320 p.)

Cześć.

Potrzebuje zrobić coś takiego. Mam klasę enum w której są różne opcje:

public enum differentOptions {
    FIRST_OPTION(1),SECOND_OPTION(2);
     differentOptions(int option) {
    }
}

w drugiej klasie w metodzie chciałbym użyć tego w swithc case, czyli:

private void testMethod(int option)
{
      switch(option)
             case FIRST_OPTION:
                      jakieś instrukcje;
             case SECOND_OPTION:
                      jakieś instrukcje;
}

Chodzi mi własnie o to, żeby nie było magic numbers

Wie ktoś może jak to zrobić?

 

PS: Nie wiem czy ten enum jest poprawny. Ale ogólnie chodzi o to, że jak ktoś w menu wpisze 1, to żeby się odpaliła FIRST_OPTION ze switch case'a

1 odpowiedź

+1 głos
odpowiedź 14 sierpnia 2018 przez criss Mędrzec (172,590 p.)
differentOptions.values()[option]

to to, czego szukasz.

private void testMethod(int option)
{
      switch(differentOptions.values()[option])
             case FIRST_OPTION:
                      jakieś instrukcje;
             case SECOND_OPTION:
                      jakieś instrukcje;
}
komentarz 14 sierpnia 2018 przez CenterPL Pasjonat (19,070 p.)
IMO wygodniej i ładniej byłoby użycie stałych zamiast enuma.
komentarz 15 sierpnia 2018 przez periedynek Obywatel (1,320 p.)
Cos koło tego. Tylko mam rozumieć, że to jest tablica, a ona się zaczyna od 0, w wyniku czego opcja 0 jest opcją 1, opcja 1 opcją 2 etc.... Oczywiście mógłbym zrobić testmethod(3+1), jeśli chciałbym 4 opcję, ale czy jest jakiś sens tego?

Da się to obejść?
komentarz 15 sierpnia 2018 przez CenterPL Pasjonat (19,070 p.)
No właśnie dlatego sugeruję użycie stałych. Ładniej, wygodniej, bezpieczniej i  tak dalej
komentarz 15 sierpnia 2018 przez periedynek Obywatel (1,320 p.)
public class switchz {

    private static final int FIRST_OPTION =1 ;
    private static final int SECOND_OPTION =2 ;

    public void chooseOPption(int option) {
        switch (option) {
            case FIRST_OPTION:
                System.out.println("1 opcja");
                break;
            case SECOND_OPTION:
                System.out.println("2 opcja");
                break;
        }
    }
}

o coś takiego Ci chodzi?

komentarz 15 sierpnia 2018 przez periedynek Obywatel (1,320 p.)
Swoją drogą, takich opcji bedzie 11.

Powineinem więc stworzyć osobną klasę do tego?
komentarz 15 sierpnia 2018 przez CenterPL Pasjonat (19,070 p.)
dokładnie o coś takiego. I myślę, że można to wyabstrahować do osobnej klasy finalnej albo lepiej interfejsu, bo przecież nie chcesz instancji tego tworzyć. Nie jestem javovcem więc jak gdzieś tu walnąłem bzdurę to sory :P
komentarz 15 sierpnia 2018 przez periedynek Obywatel (1,320 p.)
W jakim sensie do interfejsu? Do klasy to jeszcze umiałbym zrobić, tylko własnie muszę instancję tworzyć.

Interfejs mogę zaimplementować, ale nie wiem jak mam zaimplementować ten interfejs.
komentarz 15 sierpnia 2018 przez periedynek Obywatel (1,320 p.)
Nie wiem która opcja jest lepsza.

Czy importować je statycznie z tej klasy, czy pisać Options.FIRSTOPTION. Tych importów faktycznie będzie z 11, dlatego mam dylemat.

Podobne pytania

0 głosów
4 odpowiedzi 1,084 wizyt
pytanie zadane 5 października 2018 w Java przez Potopiec Obywatel (1,550 p.)
0 głosów
1 odpowiedź 703 wizyt
pytanie zadane 15 stycznia 2017 w Java przez Szymon Ciamaga Obywatel (1,980 p.)
0 głosów
2 odpowiedzi 336 wizyt
pytanie zadane 22 sierpnia 2022 w C i C++ przez Daaa22 Dyskutant (8,250 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...