gpt4 book ai didi

java - 如何实现 Java 枚举抽象类和接口(interface)?

转载 作者:行者123 更新时间:2023-12-01 22:29:13 25 4
gpt4 key购买 nike

我有以下问题。我在 java 中有一个包含不同枚举类的包。

在添加所有枚举通用的新方法时,避免重复自己的正确方法是什么?

我的问题:

channel .java

    public enum Channel {
channel1, channel2;
}

颜色.java

    public enum color{
color1, color2;
}

两者都应该使用的方法:

    public static boolean contains(String channel) {
for (Channel c : Channel.values()) {
if (c.name().equals(channel)) {
return true;
}
}
return false;
}

请注意,循环引用了枚举本身。因此,这将需要将该方法复制并粘贴到我要使用它的所有枚举中。有什么建议吗?

谢谢维克多

最佳答案

不幸的是,您不能按照您想要的方式进行操作。您可以做的是拥有某种具有通用方法的实用程序类。

例如……

public class EnumUtils {

public static boolean contains(Enum[] enumValues, String nameToCheck) {

for(Enum each : enumValues) {
if(each.name().equals(nameToCheck)) {
return true;
}
}
return false;
}
}

然后你可以像这样使用它......

System.out.println(EnumUtils.contains(Channel.values(), "channel1")); // TRUE
System.out.println(EnumUtils.contains(Color.values(), "octarine")); // FALSE

警告 - 在更复杂的系统中,这些静态 util 类有时有点“代码味道”,但我认为在您的情况下没问题。

对于 Java6:

     change each.name() => each.toString()

关于java - 如何实现 Java 枚举抽象类和接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30345332/

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