0
我無法完全理解反射如何工作,所以我在嘗試爲我的GsonBuilder
註冊自定義類型適配器時遇到了一些麻煩。獲取通用類型的參數化類型
我需要爲List<Something>
類型註冊一個類型適配器。
這是一個工作代碼:
gsonBuilder.registerTypeAdapter(
new TypeToken<List<MyClass>>() { }.getType(), new ListDeserializer(MyClass.class)
);
的事情是,我有很多的類註冊我的類型的適配器,和我有一個ListDeserializer
和SingleDeserializer
適配器。
我想去通用,所以我只是調用一個函數,通過我的GsonBuilder
和類,然後你去。
這裏是我的嘗試:
private static <T> void registerTypeAdapter(GsonBuilder gsonBuilder, T clazz) {
gsonBuilder.registerTypeAdapter(clazz.getClass(), new SingleDeserializer(clazz.getClass()));
gsonBuilder.registerTypeAdapter(
new TypeToken<List<T>>() {
}.getType(), new ListDeserializer(clazz.getClass())
);
}
它不適合我的工作ListDeserializer
。我的猜測是,由於T
是List
的通用參數化類型,因此無法在運行時檢測到它。
有什麼建議嗎?
這是真棒@varren!謝謝! –