Znalazłem Enum
s zdefiniowane jak poniżej:Enum metoda przesłanianie
public Enum MyEnum {
ONE
{
@Override
public int getSomething() {
return 1;
}
},
TWO
{
@Override
public int getSomething() {
return 2;
}
}
int getSomething()
{
return 0;
}
}
Jakoś czuję pewnego rodzaju dyskomfort z tego wdrożenia, ponieważ myślę, że idealnie pola powinny zostać zdefiniowane w tym celu, a klasa powinna wyglądać mniej więcej:
Problem polega na tym, że oprócz osobistego dyskomfortu nie mogę znaleźć żadnego dobrego powodu, aby zmienić ten kod. Czy istnieje?
Drugi formularz sprawia, że jest bardziej czytelny i bardziej rozszerzalny, przejdź do tego! –
Jest to * maszyna stanu * w pierwszym przykładzie. Nie zaimplementowane całkiem poprawnie ('getSomething()' powinno być abstrakcyjne) ... ale właśnie dlatego używasz tego typu struktury. Metody są na ogół dużo bardziej złożone w rzeczywistym przykładzie (faktycznie wykonują operacje, a nie zwracają wartości statyczne) i/lub rzucają 'IllegalStateException', gdy nie powinny być wywoływane w bieżącym stanie. –
Obie te metody są prawidłowe. –