Jaka jest zalecana praktyka w przypadku wyliczenia Java, które ma wartości 1300 i umieszczenie go w zorganizowanych grupach? Wiem, że nie można po prostu rozszerzyć grupy enum, więc czy istnieją inne dobre alternatywy?Podzielić duże wyliczenie Java
Odpowiedz
Korzystałbym z interfejsu, który wszystkie te instancje współdzielą, następnie można użyć dowolnej liczby wyliczeń lub załadować je z innego źródła danych, takiego jak plik lub baza danych.
Z perspektywy optymalizacji, dobrym pomysłem byłoby podzielenie ich na spójne jednostki. Gdybym był tobą, oceniłbym, które z tych wyrażeń mają spójność w kierunku odpowiedzialności.
1300 wartości? Dobry Boże, który pomyślał, że to dobry pomysł? Czy nie przyszło to komuś po 100, że robiło się za duże?
Nie ma dobrego sposobu obejścia tego, co mogę zobaczyć. Zdobądź łopatę i zacznij łączyć je w bardziej spójne podgrupy.
Oto pytanie: w jaki sposób są używane? Jeśli są one częścią konfiguracji aplikacji, zaleciłbym przeniesienie ich do bazy danych zamiast trzymania ich w kodzie. W ten sposób będą bardziej elastyczni.
Są one już w bazie danych. Te wyliczenia są kluczami podstawowymi dla listy kodów błędów. Przykład: klucz wyliczeniowy "NO_DATA_FOUND" wskazuje na "Przepraszamy, ale nie możemy znaleźć Twojego żądania" w bazie danych. – yd39
można złamać je jak:
import java.util.*;
interface Children {
Set<Enum<?>> children();
}
enum Dog implements Children {
myDog,yourDog;
Dog() {
this(null);
}
Dog(Set<Enum<?>> children) {
this.children=children;
}
@Override public Set<Enum<?>> children() {
return children!=null?Collections.unmodifiableSet(children):null;
}
Set<Enum<?>> children;
}
enum Animal implements Children {
cat,dog(EnumSet.allOf(Dog.class));
Animal() {
this(null);
}
Animal(Set children) {
this.children=children;
}
@Override public Set<Enum<?>> children() {
return children!=null?Collections.unmodifiableSet(children):null;
}
Set<Enum<?>> children;
}
enum Thing implements Children {
animal(EnumSet.allOf(Animal.class)),vegetable,mineral;
Thing() {
this(null);
}
Thing(Set children) {
this.children=children;
}
@Override public Set<Enum<?>> children() {
return children!=null?Collections.unmodifiableSet(children):null;
}
Set<Enum<?>> children;
}
public class So8671088 {
static void visit(Class<?> clazz) {
Object[] enumConstants = clazz.getEnumConstants();
if (enumConstants[0] instanceof Children) for (Object o : enumConstants)
visit((Children) o, clazz.getName());
}
static void visit(Children children, String prefix) {
if (children instanceof Enum) {
System.out.println(prefix + ' ' + children);
if (children.children() != null) for (Object o : children.children())
visit((Children) o, prefix + ' ' + children);
} else
System.out.println("other " + children.getClass());
}
public static void main(String[] args) {
visit(Thing.animal," ");
visit(Thing.class);
}
}
- 1. Jak podzielić duże pliki?
- 2. Ustaw wartość na wyliczenie - Java
- 3. Jak przekonwertować jedno wyliczenie na inne wyliczenie w języku Java?
- 4. Java: Wyliczenie z zestawu <String>
- 5. Java ~ Wysyła wyliczenie przez połączenie z gniazdem
- 6. (Beginner Java) klasa, interfejs lub wyliczenie oczekiwane
- 7. Aby podzielić tylko chińskie znaki w java
- 8. Java - jak podzielić ciąg znaków plusa?
- 9. jak podzielić ciąg zawiera liczby w java?
- 10. Duże przesyłanie plików
- 11. Czytaj duże dane mongody
- 12. Wyliczenie * wszystkich * ścieżek hamiltonianskich
- 13. KVC a szybkie wyliczenie
- 14. Wyliczenie w adnotacjach
- 15. Wyliczenie wewnątrz JSP
- 16. Włączyć wyliczenie w JNI?
- 17. Scala, Morphia i wyliczenie
- 18. HttpContent Główki niespójne wyliczenie
- 19. Konwertuj na wyliczenie
- 20. Wyliczenie Pythona w Ruby?
- 21. Foreach i wyliczenie
- 22. String na wyliczenie
- 23. Co oznacza wyliczenie DateTimeStyles.RoundtripKind?
- 24. Czy mogę podzielić repozytorium Mercurial?
- 25. Profilowanie Java: wykryj, który fragment kodu powoduje duże obciążenie procesora.
- 26. Przekształcanie łańcucha wejściowego użytkownika na duże litery Java
- 27. Regex podzielić camel sprawa
- 28. Wyliczenie JavaScript daje zbyt wiele cyfr zerowych
- 29. MySQL Binary Storage używając BLOB VS systemu OS Plik: duże pliki, duże ilości, duże problemy
- 30. jQuery + tablesorter + IE7 + duże tabele = piekło
całego serca popieram. Załaduj je z pliku lub bazy danych. Jeśli jednak istnieją implementacje metod w obrębie kilku wyliczeń, należy rozważyć utworzenie interfejsu i osobnej implementacji dla każdego wyliczenia, które ma zdefiniowaną metodę, a następnie jedną domyślną implementację, która odbiera wartości z bazy danych lub pliku. Jeśli nie ma zdefiniowanych metod, po prostu utwórz POJO. – Saish