小编典典

Java中的JSON和泛型-类型安全警告

json

我有一些数据存储在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());

除了添加之外,还有其他方法可以解决此问题@SuppressWarnings("unchecked")吗?


阅读 279

收藏
2020-07-27

共1个答案

小编典典

您的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>

然后我们可以写

JSONObject<String,Object> obj=new JSONObject<String,Object>();

并且put方法将不再生成警告

2020-07-27