gpt4 book ai didi

java - 枚举继承,或类似的东西

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:21:19 26 4
gpt4 key购买 nike

我有一个字符串(这是一条消息)作为输入,我需要根据该字符串执行 4 种可能的操作之一我知道有 eunm.valueOf() 选项,但我有 4 个不同的枚举,每个枚举几乎没有可能的消息。

看起来像:

public enum first{ONE,TWO,THREE};
public enum second{FOUR,FIVE,SIX};
public enum third{SEVEN,EIGHT,NINE};

public void work(String message){
//Here I want to compare message string to one of the 3 enums
}

是否可以用枚举的一种方法来做到这一点?或者我应该只尝试创建一个,如果出现异常,再尝试另一个,依此类推?

最佳答案

正如其他人评论的那样,最好仔细考虑一下您是否真的需要 4 个不同的枚举。

但如果你这样做,你可以让他们实现一个通用接口(interface)。然后你可以将输入字符串映射到适当的枚举成员,并调用它的方法来完成你想要的。有点像

public interface SomeInterface {
void doSomething();
};

public enum First implements SomeInterface {
ONE,TWO,THREE;
@Override
public void doSomething() { ... }
};
...
Map<String, SomeInterface> myMap = new HashMap<String, SomeInterface>();
for (First item : First.values()) {
myMap.put(item.toString(), item);
}
...

public void work(String message){
SomeInterface obj = myMap.get(message);
if (obj != null) {
obj.doSomething();
}
}

这假设您想要做的 4 种可能的事情对应于 4 个枚举。如果没有,您也可以为每个枚举成员和任何枚举成员分别覆盖该方法,例如

public enum First implements SomeInterface {
ONE,
TWO {
@Override
public void doSomething() { // do something specific to TWO }
},
THREE;
@Override
public void doSomething() { // general solution for all values of First }
};

关于java - 枚举继承,或类似的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5937249/

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