具有generics参数基础的Javagenerics参数

我想知道在Java中是否有一个优雅的解决方案(除了显而易见的一个 – 声明一个不同的/显式函数。这是代码:

private static HashMap nameStringIndexMap = new HashMap(); private static HashMap nameBufferIndexMap = new HashMap(); // and a function private static String newName(Object object, HashMap nameIndexMap){ .... } 

问题是我无法将nameStringIndexMapnameBufferIndexMap参数传递给函数。 除了做另一个明确需要HashMap HashMap 参数的函数之外,我不知道更优雅的解决方案。

我的问题是:这可以用更优雅的解决方案/使用generics或类似的东西来制作吗?

谢谢,

尤利安

你也可以使你的function通用:

 private static  String newName(E object, HashMap nameIndexMap){ .... } 

这将函数的两个参数HashMap在一起,因此对于HashMap您只能将String实例作为第一个参数传递。 这可能是您想要的也可能不是:如果您只想从地图中获取元素,Jon的解决方案更简单,但如果您想将此对象添加到地图中,则此选项是唯一的选择。

你想要这样的东西:

 private static String newName(Object object, HashMap nameIndexMap) { .... } 

或(如评论中所指出)

 private static String newName(Object object, HashMap nameIndexMap) { .... } 

这将阻止你将任何东西放入地图,因为你不能保证得到正确的键 – 但是你可以从地图中取出东西并保证它们是整数。

请注意,此版本不会使该方法通用 – 这意味着它更简单,但它提供与Peter的版本相同的类型安全性,因为您无法保证该object的类型正确。 每种方法都有其优点和缺点 – 根据方法的主体使用最合适的方法。 (如果你需要在地图中输入一个条目,彼得的方法肯定会更好。)