反射の仕組みを完全に理解できないので、GsonBuilder
のカスタムタイプのアダプタを登録しようとするといくつかの問題があります。genericからのParameterizedTypeのタイプを取得
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
のために動作しません:
は、ここに私の試みです。私の推測では、は一般的なパラメータ化タイプList
であるため、実行時にそれを検出することはできません。
提案がありますか?
素晴らしい@varrenです!ありがとう! –