无锡网站开发电话/福州百度seo代理
我想定义一个枚举类型,其中两个常量的“值”相同.我将这两个常量称为重复.请考虑以下示例:我想定义一个浏览器类型列表,我想要一个文字“IE”和“InternetExplorer”,如下所示:
enum Browser {
CHROME("chrome"),
FIREFOX("firefox"),
IE("ie"),
INTERNETEXPLORER("ie");
String type;
Browser(String type) {
this.type = type;
}
}
但是,有了这个,以下代码将失败,
Browser a = Browser.IE;
Browser b = Browser.INTERNETEXPLORER;
Assert.assertTrue(a==b);
我能想到的唯一解决方法是添加一个返回浏览器实例内部值的Browser类型的value()方法.而平等测试代码将是
Assert.assertTrue(a.value()==b.value())
这不好.那么有没有人有更好的主意?
为什么Java不允许重写诸如Enum< T>的equals()之类的方法?类?
编辑:
好的,谢谢你的回答和评论.我同意我原来的想法违背了枚举的目的.我认为以下变化可以满足我的需求.
public enum Browser {
CHROME,
FIREFOX,
IE;
public static Browser valueOfType(String type) {
if (b == null) {
throw new IllegalArgumentException("No browser of type " + type);
switch (type.toLowerCase()) {
case "chrome":
return Browser.CHROME;
case "firefox":
return Browser.FIREFOX;
case "ie":
case "internetexplorer":
case "msie":
return Browser.IE;
default:
throw new IllegalArgumentException("No browser of type " + type);
}
}
}