Когда я звоню:
ArrayList<MyType> myobject = new Gson().fromJson(data, new TypeToken<ArrayList<T>>(){}.getType());
все работает правильно, используя fromJson(String, Type)
, когда я звоню:
ArrayList<MyType> myobject = helper(data);
public ArrayList<MyType> helper(String data){
return new Gson().fromJson(data, new TypeToken<ArrayList<MyType>>(){}.getType());
}
, все равно работает нормально, но когда я звоню:
ArrayList<MyType> myobject = helper(data, MyType.class);
public <T> ArrayList<T> helper(String data, Class<T> type){
return new Gson().fromJson(data, new TypeToken<ArrayList<T>>(){}.getType());
}
неверный аргумент типа.
Как исправить последний фрагмент кода?
РЕШЕНИЕ
Как @LewsTherin предложил, я просто дал точный аргумент Type от вызывающей стороны
, так что объявление помощника так:
public <T> ArrayList<T> helper(String data, Type type){
ArrayList<T> rtn = g.fromJson(data, type);
return rtn;
}
и вызов как:
variable = helper(data, new TypeToken<ArrayList<MyType>>(){}.getType());
Но если кто-нибудьМожно отредактировать вспомогательную функцию, чтобы упростить код, я отмечу его как правильный!