Мне нужно реализовать сериализацию 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
}
}
Моя проблема: Когда я загружаю AwesomeList из JSONObject, мне нужно создать его элементы, но это невозможно, так как java запрещает мне писать
T newItem = new T();
newItem.load(obj);
Как я долженизменить мой подход к этой задаче?