1300の値を持つJava enumを取得し、整理されたグループに入れるために推奨される方法は何ですか?私はあなたが列挙グループを拡張することはできないことを知っています。他の良い選択肢がありますか?大規模なJava enumの解読
5
A
答えて
7
これらのインスタンスがすべて共有するインターフェイスを使用して、任意の数の列挙型を使用するか、ファイルやデータベースなどの別のデータソースからそれらを読み込むことができます。
2
oopsの観点から見ると、それらを凝集単位に分解することは良い考えです。私があなたであれば、私はこれらの列挙型のどれが責任のために結束しているのか評価します。
4
1300値?それは良いアイデアだと思っていた良い神ですか?それが100を過ぎてしまった人にはあまりにも大きくなっていないのでしょうか?
私が見ることができるその周りに良い方法はありません。シャベルを入手し、それらをより密接なサブenumsに結合し始める。
ここに質問があります:どのように使用されますか?それらがアプリケーション構成の一部である場合は、コードに保管するのではなくデータベースに移動することをお勧めします。彼らはそのように柔軟になるでしょう。
+1
これは実際にはすでにデータベースに入っています。これらの列挙型は、エラーコードのリストの主キーです。たとえば、 'NO_DATA_FOUND'列挙型キーは、「申し訳ありませんが、あなたの要求をデータベースで見つけることができません」を指しています。 – yd39
5
のようにあなたがそれらを破ることができます。私は心から同意
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. のJava:大規模なリスト
- 2. Java。 SparkSQLは、大規模なデータセット
- 3. 大規模なテキストファイルをリアルタイムで解析する(Java)
- 4. 大規模な構成
- 5. 大規模なMySQLアップデートクエリ
- 6. 大規模な参照データ
- 7. Pythonの大規模なピボットテーブル
- 8. 大規模なグリッドデータセットのストレージ
- 9. 大規模なコミュニティのCMS
- 10. WEKAの大規模トレーニングデータセット(Javaコード)
- 11. Javaの大規模配列プログラミング
- 12. 追加大規模なXML
- 13. 中規模大規模プロジェクトの構造
- 14. React-Redux大規模なカスタムデータテーブル
- 15. 大規模なアプリケーション構造
- 16. 大規模なアプリケーションデザイン(WPF/Silverlight)
- 17. Laravel:TokenMismatchExceptionは、大規模なビデオファイル
- 18. 大規模なICMP pingフェアユースポリシー
- 19. DataGridView、大規模なデータバインディングソリューション
- 20. PHP - 大規模なPOSTリクエストサーバエラー
- 21. サイズで大規模なデータセット
- 22. RESTと大規模なデータベースクエリ
- 23. Webjobsと大規模なデータベースクエリ
- 24. Python - 大規模なGISデータセットプロット
- 25. 大規模なデータが
- 26. 大規模なPythonランダムシェアラー
- 27. Javaで非常に大規模なマップを作成する
- 28. 大規模なJavaアプリケーションのログを標準化する方法
- 29. 危険な大規模なプロトコルメッセージを読むCaffe warning
- 30. Qtは、大規模な信号
。それらをファイルまたはデータベースからロードします。ただし、いくつかの列挙型の中にメソッド実装がある場合は、インタフェースを定義し、メソッドが定義されている列挙型ごとに個別の実装を作成し、データベースまたはファイルから値を受け取る1つのデフォルトの実装を検討してください。メソッドが定義されていない場合は、単にPOJOを作成します。 – Saish