gpt4 book ai didi

java - 确保使用每个枚举值

转载 作者:行者123 更新时间:2023-12-02 05:14:34 25 4
gpt4 key购买 nike

如果我使用 enum以确定任务的类型。

public enum TaskType {
TYPE_ONE("Type1"),TYPE_TWO("Type2"),TYPE_THREE("Type3");

private final String type;

private StageType(String type) {
this.type = type;
}

@Override
public String toString() {
return type;
}
}

我如何确保我的申请中的某一点

if(taskType == TaskType.TYPE_ONE) {
typeOneProcessing();
} else if(taskType == TaskType.TYPE_TWO) {
typeTwoProcessing();
} else if(taskType == TaskType.TYPE_THREE) {
typeThreeProcessing();
}

每个 enum值被使用?
我的意思是,如果有一天我需要添加一个新的 TYPE_FOUR,我需要找到代码中使用 enum 的每个位置。 ,所以我问自己是否有更好的方法,这样我要么避免 enum并使用其他一些概念或者我可以确保 enum 的每个值在那段代码中使用了。

最佳答案

有 findbugs 类型的工具可以执行此操作,但您可以考虑完全删除 if-then-else 并将处理放在 enum 中。在这里,添加新的 TYPE_FOUR 将强制您编写它的 doProcessing() 方法。

public interface DoesProcessing {

public void doProcessing();
}

public enum TaskType implements DoesProcessing {

TYPE_ONE("Type1") {
@Override
public void doProcessing() {

}
},
TYPE_TWO("Type2") {
@Override
public void doProcessing() {

}
},
TYPE_THREE("Type3") {
@Override
public void doProcessing() {

}
},
TYPE_FOUR("Type4") {
// error: <anonymous com.oldcurmudgeon.test.Test$TaskType$4> is not abstract and does not override abstract method doProcessing() in DoesProcessing
};

private final String type;

private TaskType(String type) {
this.type = type;
}

@Override
public String toString() {
return type;
}
}

public void test() {
DoesProcessing type = TaskType.TYPE_TWO;
type.doProcessing();
}

如果您更喜欢抽象方法,那么这可以:

public enum TaskType {

TYPE_ONE("Type1") {
@Override
public void doProcessing() {

}
},
TYPE_TWO("Type2") {
@Override
public void doProcessing() {

}
},
TYPE_THREE("Type3") {
@Override
public void doProcessing() {

}
};

private final String type;

private TaskType(String type) {
this.type = type;
}

// Force them all to implement doProcessing.
public abstract void doProcessing();

@Override
public String toString() {
return type;
}
}

关于java - 确保使用每个枚举值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29008582/

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