2016-05-25 212 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); 
    } 
} 
相关问题