我有以下问题。 我在 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/