[英]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)
Object
是String
和Integer
最具体的超类型。 您的代码还有改进的空间。 首先依赖Map
接口,而不是具体的HashMap
实现。 其次,如果您不需要Comparable
功能,只需使用Map<String, Object>
。 最后但并非最不重要的是,避免使用多类型集合并且更喜欢强类型。
“ [...]数据包含字符串和整数[...] ” - 如果它只是从String
到Integer
的映射:
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.