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

Tea*_*App 3 java collections hashmap

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

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

举个例子 :

可以只有4对,而且所有四个键都只能,

 1. <North, Place>
 2. <South, Place>
 3. <East, Place>
 4. <West, Place>
Run Code Online (Sandbox Code Playgroud)

当开发人员使用我的方法时,如果他们使用除上述之外的其他密钥,他们应该会收到错

谢谢你的帮助

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

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

Chr*_*ung 5

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

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

Map<Direction, Place> map = new EnumMap<Direction, Place>(Direction.class);
Run Code Online (Sandbox Code Playgroud)

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