2016-05-25 282 views
-2

我無法用一個枚舉參數的值填充靜態地圖。的什麼,我想在這裏說實例:在構造函數外訪問枚舉參數?

public enum LettersAndNumbers { 
    A(1, 2), 
    B(2, 3); 

    private static HashMap<Integer, Integer> numbers = new HashMap<Integer, Integer(); 

    private LettersAndNumbers(int numberone, int numbertwo) {} 

     // Somehow put arguments "numberone" and "numbertwo" into map 

    public static Integer getNumberTwo(int numberone) { 
      return numbers.get(numberone); 
    } 
} 

是否有一個靜態塊來訪問這些變量的方式,或其他地方外構造的?我一直在尋找一段時間,但我無法找到它。

在此先感謝。

+0

你的問題不清楚。但我想你想把所有的枚舉放入HashMap中以便在需要時獲取。所以你可以嘗試把枚舉的構造函數:numbers.put(numberone,numbertwo); – Ken

回答

1

您需要將numberonenumbertwo存儲在您的enum中作爲字段。然後,您可以使用一個靜態初始化塊來迭代values()並將它們存儲在您的Map中。類似的,

public enum LettersAndNumbers { 
    A(1, 2), B(2, 3); 
    private int numberone; 
    private int numbertwo; 
    private static Map<Integer, Integer> numbers = new HashMap<>(); 
    static { 
     for (LettersAndNumbers lan : LettersAndNumbers.values()) { 
      numbers.put(lan.numberone, lan.numbertwo); 
     } 
    } 

    private LettersAndNumbers(int numberone, int numbertwo) { 
     this.numberone = numberone; 
     this.numbertwo = numbertwo; 
    } 

    public static Integer getNumberTwo(int numberone) { 
     return numbers.get(numberone); 
    } 
} 
相關問題