所以,我有一个像这样的枚举,
public enum PlanProcessor {
A(1){
@Override
void processPlan(...){
// logicA
}
},
B(2){
@Override
void processPlan(...){
// logicB
}
};
abstract void processPlan(...);
private int code;
public static PlanProcessor valueOf(int code) {
for (PlanProcessor type : values()) {
if (type.code == code) {
return type;
}
}
throw new IllegalArgumentException("No enum const " + code);
}
}
现在在服务类中,
void execute(int classId) {
PlanProcessor p = null;
switch(PlanProcessor.valueOf(classId)){
case A: {
p = PlanProcessor.A;
break;
}
case B: {
p = PlanProcessor.B;
break;
}
}
p.processPlan(...);
}
现在,这里一切正常。但我想知道,有没有比使用 switch() 为 A、B、C 调用 processPlan() 更好的方法?
如果你这样做,请告诉我。谢谢。