相关疑难解决方法(0)

如何在Java中定义重复的枚举常量?

我想定义一个枚举类型,其中两个常量的"值"相同.我将这两个常量称为重复.考虑以下示例:我想定义一个浏览器类型列表,我想要一个文字"IE"和"InternetExplorer",如下所示:

enum Browser {
    CHROME("chrome"),
    FIREFOX("firefox"),
    IE("ie"),
    INTERNETEXPLORER("ie");

    String type;
    Browser(String type) {
        this.type = type;
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,有了这个,以下代码将失败,

Browser a = Browser.IE;
Browser b = Browser.INTERNETEXPLORER;
Assert.assertTrue(a==b);
Run Code Online (Sandbox Code Playgroud)

我能想到的唯一解决方法是添加一个返回浏览器实例内部值value()Browser类型的方法.并且相等测试代码将是

Assert.assertTrue(a.value()==b.value())
Run Code Online (Sandbox Code Playgroud)

这不好.那么有没有人有更好的主意?

为什么Java不允许覆盖像类这样equals()的方法Enum<T>

编辑:

好的,谢谢你的回答和评论.我同意我原来的想法违背了枚举的目的.我认为以下变化可以满足我的需求.

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 …
Run Code Online (Sandbox Code Playgroud)

java enums

10
推荐指数
3
解决办法
1万
查看次数

标签 统计

enums ×1

java ×1