gpt4 book ai didi

java - 使用枚举来指定类子类型是否可以接受?

转载 作者:行者123 更新时间:2023-12-02 02:21:26 24 4
gpt4 key购买 nike

在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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com