私のクラスは次のようなものです:
class X {}
class Y extends X {};
class Z extends X {};
各サブクラス (id + クラス) の列挙型があります。
enum Type {
Y_TYPE(1, Y.class), Z_TYPE(2, Z.class);
int id;
Class c;
public Type(int id, Class c) { this.id = id; this.c = c; }
public static X createInstance() throws Exception {
return c.newInstance();
}
}
次に、次のように使用しました。
X parseFromID(int id) {
for (Type v : Type.values()) {
if (v.id == id) {
return v.createInstance();
}
}
}
それは正常に動作しますが、これが整数 id に基づいてデータを作成する Java-ist の方法であるかどうか疑問に思っていますか? 探すべき悪いことはありますか?
長い if-else 条件なしで渡されるクラスを X タイプに強制する方法はありますか? 多数のサブクラスがある場合を考えてください。
なぜ整数 ID に取り組みたいのですか?
私はある種のパーサーを書いているので、どこかから取得した整数 ID を適切なオブジェクトに変換する必要があります。