简单的问题,但我无法找到答案,
是否可以约束应用程序的HashMap的键约定?由于我不希望未来的开发人员使用它并尝试使用不同的密钥,我想强制规定他们必须使用哪种类型的密钥。
举个例子:
只有4对, 所有四个关键只能是,
1. <North, Place>
2. <South, Place>
3. <East, Place>
4. <West, Place>
当开发人员使用我的方法时,如果他们使用除上述之外的其他密钥,则会出错。
感谢您提供任何帮助
到目前为止我能做些什么:
我可以在添加键和值时通过if语句进行检查 HashMap,假设在setLocationList(String key,Place place);.但是我 如果可以的话,想要比这更聪明的东西。感谢。
答案 0 :(得分:5)
当然,请为您的路线使用枚举,然后使用EnumMap
作为地图类型。
public enum Direction {
NORTH, EAST, SOUTH, WEST;
}
Map<Direction, Place> map = new EnumMap<Direction, Place>(Direction.class);
这可以保证密钥必须属于Direction
类型。并且它是无懈可击的 - 因为传递给EnumMap
构造函数的类型键,即使你使用泛型盲代码,类型限制仍然会被强制执行(在运行时)。