我需要为某些对象实现JSON序列化,并且在与通用集合进行集成时遇到了一个问题。
所有可序列化的类都实现此接口(JSONObject来自此库):
interface JSONSerializable{ public JSONObject dump() throws JSONException //serializes object public void load(JSONObject obj) throws JSONException //deserializes object }
我基于java.util.list的集合的代码大致如下所示:
class AwesomeList<T extends JSONSerializable> implements JSONSerializable{ private LinkedList<T> items = new LinkedList<T>(); ... ... public JSONObject dump() throws JSONException { JSONObject result = new JSONObject(); JSONArray a = new JSONArray(); for(T i : items){ a.put(i.dump()); } result.put("items", a); return result; } public void load(JSONObject obj) throws JSONException{ //here is my problem } }
我的问题是:当我从JSONObject加载AwesomeList时,我需要创建其元素,但是这是不可能的,因为Java禁止我写
T newItem = new T(); newItem.load(obj);
我应该如何修改此任务的方法?
您是否绑定到该库?Google Gson非常受欢迎。我自己没有将其与Generics一起使用,但他们的首页说Gson认为对Generics的支持非常重要。