约束特定键 - HashMap的约定 - Java

时间:2011-09-14 01:15:23

标签: java collections hashmap

简单的问题,但我无法找到答案,

是否可以约束应用程序的HashMap的键约定?由于我不希望未来的开发人员使用它并尝试使用不同的密钥,我想强制规定他们必须使用哪种类型的密钥。

举个例子:

只有4对, 所有四个关键只能是,

 1. <North, Place>
 2. <South, Place>
 3. <East, Place>
 4. <West, Place>

当开发人员使用我的方法时,如果他们使用除上述之外的其他密钥,则会出错。

感谢您提供任何帮助

  

到目前为止我能做些什么:

     

我可以在添加键和值时通过if语句进行检查   HashMap,假设在setLocationList(String key,Place place);.但是我   如果可以的话,想要比这更聪明的东西。感谢。

1 个答案:

答案 0 :(得分:5)

当然,请为您的路线使用枚举,然后使用EnumMap作为地图类型。

public enum Direction {
    NORTH, EAST, SOUTH, WEST;
}

Map<Direction, Place> map = new EnumMap<Direction, Place>(Direction.class);

这可以保证密钥必须属于Direction类型。并且它是无懈可击的 - 因为传递给EnumMap构造函数的类型键,即使你使用泛型盲代码,类型限制仍然会被强制执行(在运行时)。