我想用Java编写一个枚举,可用于通过数字识别Class类型。像这样的东西
public static enum ClassType{
1(Person.class)
2(Dog.class)
3(Cat.class)
}
然后写这样的东西
ClassType classType;
Class classOfMyObject = classType.get(1);
我不确定我该如何用代码编写。这只是一个例子。谢谢!
首先,您不能仅使用数字来命名您的枚举,我认为您正在寻找这个:
enum ClassType {
E1(Person.class),
E2(Dog.class),
E3(Cat.class);
private Class value;
ClassType(Class value) {
this.value = value;
}
}
此外,根据您的情况,您可以创建一个包含枚举和枚举索引的Map,例如:
enum ClassType {
E1(Person.class),
E2(Dog.class),
E3(Cat.class);
private Class value;
static Map<Integer, ClassType> classes;
static {
classes = new HashMap<>();
for (int i = 0; i < ClassType.values().length; i++) {
classes.put(i, ClassType.values()[i]);
}
classes = Collections.unmodifiableMap(classes);
}
ClassType(Class value) {
this.value = value;
}
public Class getValue() {
return value;
}
}
因此您可以致电:
Map<Integer, ClassType> classTypes = ClassType.classes;
ClassType ct = classTypes.get(0);
...