Po pierwsze, przepraszam, jeśli jest to duplikat istniejącego pytania. Nie byłem dokładnie pewien, jak sformułować moje pytanie, więc może dlatego nie znalazłem jeszcze jednoznacznej odpowiedzi. Zasadniczo, chcę wiedzieć, czy następuje za dobre praktyki lub jeśli istnieje lepszy sposób to zrobić:Czy przy użyciu instancji obiektu jako dobrej praktyki wartości wpisu?
public enum ExampleEnum {
ENTRY_1(new ExampleCodedValue("entry1", "comment1")),
ENTRY_2(new ExampleCodedValue("entry2", "comment2")),
ENTRY_3(new ExampleCodedValue("entry3", "comment3")),
ENTRY_4(new ExampleCodedValue("entry4", "comment4"));
private ExampleCodedValue codedValue;
ExampleEnum(ExampleCodedValue codedValue) {
this.codedValue = codedValue;
}
public ExampleCodedValue getCodedValue() {
return codedValue;
}
}
class ExampleCodedValue {
private final String code;
private final String comment;
ExampleCodedValue(String code, String comment) {
this.code = code;
this.comment = comment;
}
}
Zasada +1 KISS. BTW Często tworzę wyliczenia z polami (jak to). Mogą być wyjątkowo przydatne. – Bohemian
Głównym powodem jest to, że to wyliczenie i inne podobne, używają typowego typu danych "ExampleCodedValue". Na przykład możesz mieć dwie wyliczenia, "Ustawienia" i "Atrybuty". Każda składa się z kodu i komentarza. To nadmierne uproszczenie mojego rzeczywistego przypadku użycia, ale dwie wyliczenia różnią się od siebie tym, co zawierają. Rozważałem również użycie przykładu @ Jeffery'ego i posiadanie metody dostępowej, która zwraca typ 'ExampleCodedValue'. Może to lepszy sposób na zrobienie tego? – speedRS
@speedRS Zastanawiam się, dlaczego miałbyś zadać sobie trud tworzenia obiektu, który nie zapewniałby dodatkowej funkcjonalności. Ale ponieważ twój przypadek użycia wymaga posiadania tego konkretnego obiektu, nie ma nic złego w twoim oryginalnym przykładzie. – Jeffrey