我的课是这样的:
class X {}
class Y extends X {};
class Z extends X {};
我对每个子类(id + class)都有一个枚举:
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 方式?有什么不好的事情应该寻找吗?
有没有办法强制传入的类是 X 类型而没有冗长的 if-else 条件?当我有大量子类时想想。
为什么要处理整数 ID?
我正在编写某种解析器,因此我需要将从某处获取的整数 id 转换为适当的对象。