繁体   English   中英

如何用不同的类型声明HashMap?

[英]How to declare HashMap with different types?

我有一个函数,声明如下:

public synchronized void update(HashMap<String, Comparable> data)

data包含字符串和整数,但Comparable会发出警告

Comparable is a raw type. References to generic type Comparable<T> should be 
 parameterized

由于我没有过多地发现警告,问题是,是否有正确的方法,我不想压制警告。

预先感谢! 马库斯

这应该取悦编译器:

public synchronized void update(HashMap<String, Comparable<Object>> data)

ObjectStringInteger最具体的超类型。 您的代码还有改进的空间。 首先依赖Map接口,而不是具体的HashMap实现。 其次,如果您不需要Comparable功能,只需使用Map<String, Object> 最后但并非最不重要的是,避免使用多类型集合并且更喜欢强类型。

[...]数据包含字符串和整数[...] ” - 如果它只是从StringInteger的映射:

public synchronized void update(HashMap<String, Integer> data)

首先,您不应该在签名中坚持使用HashMap 为什么不只是一张Map 其次,您应该允许map值类型为实现 Comparable任何内容。 第三, Comparable本身可以使用无界通配符进行参数化:

void update(Map<String, ? extends Comparable<?>> data)

现在,您可以使用HashMap<String, Integer>TreeMap<String, String>SortedMap<String, Comparable<?>>任何一个来调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM