每当我声明一个地图对象时,我总是在声明,getter和setter上得到以下警告。
Map is a raw type. References to generic type Map<K,V> should be parameterized
我的声明是:
import java.util.Map;
private Map pricingInfo;
pricingInfo = getCurrentSession();
地图正在抓取我在之前的Struts2 Action中存储的当前会话信息 并将它们传递给通用Java对象。我用来存储它的代码包含在下面,为我正在做的事情提供更多的背景信息。
ServletActionContext.getRequest().getSession().putValue("pricing", this);
但是我得到了所有预期的值并且还没有遇到运行时错误。
所以问题是我应该只使用注释来消除这些警告,还是有一种'正确'的方法来实例化和使用这些变量?
答案 0 :(得分:3)
指定键和值的类型:
Map<String, String> aMethod(aType type);
答案 1 :(得分:2)
只要有可能,就应该指定集合将包含哪些值类型。这样做有两个好处:
首先,编译器可以检查您是否错误地将错误的值类型放入集合中。
第二个是您不必从Object转换为从集合中检索值/对象时的任何值类型。
如果是Map,您需要指定两种类型:Map<K,V>
将K替换为Map中键的类型,将V替换为Map中保存的值类型。