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

Mar*_*per 5 java types declaration hashmap

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

public synchronized void update(HashMap<String, Comparable> data)
Run Code Online (Sandbox Code Playgroud)

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

Comparable is a raw type. References to generic type Comparable<T> should be 
 parameterized
Run Code Online (Sandbox Code Playgroud)

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

预先感谢!马库斯

Tom*_*icz 3

这应该会让编译器满意:

public synchronized void update(HashMap<String, Comparable<Object>> data)
Run Code Online (Sandbox Code Playgroud)

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

[...]data 包含字符串和整数[...]String ” - 如果它只是从to 的映射Integer

public synchronized void update(HashMap<String, Integer> data)
Run Code Online (Sandbox Code Playgroud)

  • `HashMap&lt;String, Comparable&lt;?&gt;&gt;` 更简洁。 (6认同)