2011-09-14 28 views
3

简单的问题,但我想不出答案,约束特定的密钥 - 约定的HashMap - Java的

是否可以约束我的应用程序的HashMap中主要的会议?因为我不希望未来的开发人员尝试使用不同的密钥,所以我希望强制执行一条关于他们必须使用什么类型密钥的规则。

举个例子:

只能有4对, 并且这四个键只能是,

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

当开发商用我的方法,如果他们使用他们应该得到的错误不同的密钥等比上面提到的。

谢谢你的任何形式的帮助

我目前可以做的:

我可能是由if语句,同时增加键和值到 HashMap的检查,让在setLocationList说(字符串关键,放置地点);但我想要一些比这更聪明的东西,如果它是可用的。谢谢。

回答

5

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

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

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

这保证了关键必须Direction类型。它是水密的 - 因为传递给EnumMap构造函数的类型键,即使您使用泛型盲代码,类型限制仍会强制执行(在运行时)。

+0

完美!谢谢克里斯! – doNotCheckMyBlog