我有一些数据存储在Java元素中,我需要以给定的格式JSONObject返回它。虽然我的实现工作正常,但是我仍然从eclipse收到警告消息(版本:Juno Service Release 2):
“ 类型安全性:put(Object,Object)方法属于原始类型HashMap。对通用类型HashMap的引用应参数化 ”
这是我的代码:
public interface Element {...} public abstract class AbstractElement implements Element {...} public final class Way extends AbstractElement {...} import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Set; import org.json.simple.JSONArray; import org.json.simple.JSONObject; public class WayToJsonConverter{ ... public JSONObject wayToJson(){ JSONObject obj = new JSONObject(); obj.put("id",way.getId()); ... return obj; } ... }
有问题的行是: obj.put("id",way.getId());
obj.put("id",way.getId());
除了添加之外,还有其他方法可以解决此问题@SuppressWarnings("unchecked")吗?
@SuppressWarnings("unchecked")
您的JSONObject是什么,它是从HashMap继承的吗?如果是,则警告可能意味着您应该声明JSONObject实例,如下所示:
JSONObject<String,Object> obj=new JSONObject<String,Object>();
更新:查看JSONObject的定义:
public class JSONObject extends HashMap
它扩展了HashMap,但不支持参数类型(如果其定义为
public class JSONObject<K,V> extends HashMap<K,V>
然后我们可以写
并且put方法将不再生成警告