2014-05-24 22 views
1

我有一個枚舉,我想用該枚舉存儲一些信息。例如,這是我所:使用枚舉存儲和獲取靜態值

public enum MapName { 
    NONE, 
    CASTLE, 
    ISLANDS, 
} 

我希望能夠調用像

MapName.NONE.get() 

一個函數來獲取映射名的值。理想情況下,我想存儲多個值。這是可能的,還是我必須創建一個單獨的類使用if語句返回適當的變量?

+1

你在尋找某種'Map',比如'HashMap'來存儲這些值嗎?這些值是什麼? –

回答

1

將附加信息與枚舉關聯很容易。請記住,每個枚舉值只存在一個實例,因此也存在與您關聯的每條額外信息。

public enum MapName { 
    NONE("map1"), CASTLE("map2"), ISLANDS("map3"); 

    private final String mapName; 

    private MapName(String mapName) { 
     this.mapName = mapName; 
    } 

    public String get() { 
     return mapName; 
    } 
} 
1

enum S IN的Java基本滿類。您可以定義變量,構造(僅私人,雖然),方法,靜態方法,抽象方法等:

public enum MapName { 
    NONE, CASTLE, ISLANDS; 

    private String name; 

    private MapName(String name) { this.name = name; } 

    public String getName() { return name; } 

    public static String getName(MapName instance) { return instance.getName(); } 
} 

您也可以定義每個實例的方法:

public enum MapName { 
    NONE { 
     @Override 
     public String getName() { 
      return "NONE"; 
     } 
    }, 
    CASTLE, // same thing for these other enums 
    ISLANDS; 

    public abstract String getName(); 
} 
1

你可以有一個枚舉存儲值。看看這是有道理的:

public enum MapName { 
    NONE("None"), 
    CASTLE("Castle"), 
    ISLANDS("Islands"); 

    private String value; 

    MapName(String value) { 
     this.value = value; 
    } 

    public String getValue() { 
     return value; 
    } 
} 

的Java枚舉擁有先進的功能,可以使他們採取行動類似於一組靜態值的靜態類。使用這個,你可以通過簡單地添加更多的參數來爲每個枚舉值添加任意數量的值!

你可以用它喜歡:

MapName.NONE.getValue(); //Returns "None" 
0

以上答案就足以理解enum.Now您的要求是枚舉常量一樣,你不能將多個值存入variable.If你想要的枚舉名稱應該是一個枚舉相同但值應該不同使用具有相同變量的不同枚舉類。