在Java中使用枚举字段指定类子类型是否可以接受?
就我而言,类型不多(少于20)。
还是使用继承或内部类更好?
目标类别:
package example;
public class Event{
private EventType eventType;
//...
}
具有子类型的枚举:
package example;
public enum EventType{
TYPE_1,
TYPE_2,
TYPE_3,
//...
TYPE_N
}
最佳答案
通常,从OOP角度来看,最好使用多态来向事件添加不同的行为。因此,创建多个Event类更好。使用枚举,最终每次要添加特殊情况时,最终都会使用switch和if / else语句,因此代码的可维护性将降低,如下所示:
public void doSomething() {
if(eventType == EVENT_1) {
....
} else if (eventType == EVENT_2) {
....
}
}
另一个解决方案是创建枚举,但行为如下:
public enum EventType {
FREE_EVENT, // Use default implementations for methods
CHARITY_EVENT {
public void isFree() {
return false;
}
public int cost() {
return 1000;
}
};
public boolean isFree() {
return true;
}
public int cost() {
return 0;
}
}
关于java - 使用枚举指定类子类型是否可以接受?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48440637/