2
我想爲數據反序列化製作一個通用方法。Java通用方法不能按預期方式工作
我的代碼:
public <T> ExportedData<T> getExportData(T classType, String exportUri) {
Response response = _client.get(exportUri);
// System.out.println(response.body.toString());
ExportedData<T> exportedData = GsonSingleton.getGson().fromJson(response.body.toString(), new TypeToken<ExportedData<T>>() {
}.getType());
return exportedData;
}
的response.body
:
{"totalResults":2,"limit":50000,"offset":0,"count":2,"hasMore":false,"items":[{"DevicesIDs":"","EmailAddress":"[email protected]"},{"DevicesIDs":"","EmailAddress":"[email protected]"}]}
我稱之爲泛型方法的方式:
ExportedData<AccengageOutboundContact> exportedData = generalBulkHelper.getExportData(new AccengageOutboundContact(), uriLimitAndOffset);
的AccengageOutboundContact
:
public class AccengageOutboundContact {
public String EmailAddress;
public String DevicesIDs;
}
而且ExportedData
:
public class ExportedData<T> {
public int totalResults;
public int limit;
public int offset;
public int count;
public boolean hasMore;
public List<T> items;
}
我希望得到AccengageOutboundContact
對象的ArrayList。我得到的是ArrayList StringMap
。
任何想法我做錯了什麼?
謝謝你,會嘗試,但爲什麼爲T擦除目的? –
因爲[這是Java的泛型工作原理](http://stackoverflow.com/questions/339699/java-generics-type-erasure-when-and-what-happens)。 – Kayaman
那麼你是說T總是被擦除爲一個對象?如果是這樣,對我來說,泛型方法是失敗的,我們總是可以使用對象,並將其轉換爲我們想要的東西,對吧? –