示例#1
0
 /**
  * Configures Gson for custom serialization or deserialization for an inheritance type hierarchy.
  * This method combines the registration of a {@link TypeAdapter}, {@link JsonSerializer} and a
  * {@link JsonDeserializer}. If a type adapter was previously registered for the specified type
  * hierarchy, it is overridden. If a type adapter is registered for a specific type in the type
  * hierarchy, it will be invoked instead of the one registered for the type hierarchy.
  *
  * @param baseType the class definition for the type adapter being registered for the base class
  *     or interface
  * @param typeAdapter This object must implement at least one of {@link TypeAdapter}, {@link
  *     JsonSerializer} or {@link JsonDeserializer} interfaces.
  * @return a reference to this {@code GsonBuilder} object to fulfill the "Builder" pattern
  * @since 1.7
  */
 @SuppressWarnings({"unchecked", "rawtypes"})
 public GsonBuilder registerTypeHierarchyAdapter(Class<?> baseType, Object typeAdapter) {
   $Gson$Preconditions.checkArgument(
       typeAdapter instanceof JsonSerializer<?>
           || typeAdapter instanceof JsonDeserializer<?>
           || typeAdapter instanceof TypeAdapter<?>);
   if (typeAdapter instanceof JsonDeserializer || typeAdapter instanceof JsonSerializer) {
     hierarchyFactories.add(0, TreeTypeAdapter.newTypeHierarchyFactory(baseType, typeAdapter));
   }
   if (typeAdapter instanceof TypeAdapter<?>) {
     factories.add(TypeAdapters.newTypeHierarchyFactory(baseType, (TypeAdapter) typeAdapter));
   }
   return this;
 }