@@ -132,15 +132,19 @@ public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> typeToken) {
132132 }
133133
134134 Type [] keyAndValueTypes = $Gson$Types .getMapKeyAndValueTypes (type , rawType );
135- TypeAdapter <?> keyAdapter = getKeyAdapter (gson , keyAndValueTypes [0 ]);
136- TypeAdapter <?> valueAdapter = gson .getAdapter (TypeToken .get (keyAndValueTypes [1 ]));
135+ Type keyType = keyAndValueTypes [0 ];
136+ Type valueType = keyAndValueTypes [1 ];
137+ TypeAdapter <?> keyAdapter = getKeyAdapter (gson , keyType );
138+ TypeAdapter <?> wrappedKeyAdapter =
139+ new TypeAdapterRuntimeTypeWrapper <>(gson , keyAdapter , keyType );
140+ TypeAdapter <?> valueAdapter = gson .getAdapter (TypeToken .get (valueType ));
141+ TypeAdapter <?> wrappedValueAdapter =
142+ new TypeAdapterRuntimeTypeWrapper <>(gson , valueAdapter , valueType );
137143 ObjectConstructor <T > constructor = constructorConstructor .get (typeToken );
138144
139145 @ SuppressWarnings ({"unchecked" , "rawtypes" })
140146 // we don't define a type parameter for the key or value types
141- TypeAdapter <T > result =
142- new Adapter (
143- gson , keyAndValueTypes [0 ], keyAdapter , keyAndValueTypes [1 ], valueAdapter , constructor );
147+ TypeAdapter <T > result = new Adapter (wrappedKeyAdapter , wrappedValueAdapter , constructor );
144148 return result ;
145149 }
146150
@@ -157,15 +161,11 @@ private final class Adapter<K, V> extends TypeAdapter<Map<K, V>> {
157161 private final ObjectConstructor <? extends Map <K , V >> constructor ;
158162
159163 public Adapter (
160- Gson context ,
161- Type keyType ,
162164 TypeAdapter <K > keyTypeAdapter ,
163- Type valueType ,
164165 TypeAdapter <V > valueTypeAdapter ,
165166 ObjectConstructor <? extends Map <K , V >> constructor ) {
166- this .keyTypeAdapter = new TypeAdapterRuntimeTypeWrapper <>(context , keyTypeAdapter , keyType );
167- this .valueTypeAdapter =
168- new TypeAdapterRuntimeTypeWrapper <>(context , valueTypeAdapter , valueType );
167+ this .keyTypeAdapter = keyTypeAdapter ;
168+ this .valueTypeAdapter = valueTypeAdapter ;
169169 this .constructor = constructor ;
170170 }
171171
0 commit comments