Я использовал ответ Ивана, чтобы подсказать мне более элегантное решение - оно не идеальное, но оно работало достаточно хорошо для меня. Я создал новый JsonSerializer, который выбрасывает тип A, приводя его к объекту. Кажется, что при задании простого объекта Gson смотрит на фактический тип объекта, а не ссылается на тип передаваемой переменной.
public static class ASerializer implements JsonSerializer<A> {
@Override
public JsonElement serialize( A in, Type type, JsonSerializationContext ctx ) {
return ctx.serialize( (Object) in );
}
}
Затем вы передаете ASerializer
GsonBuilder
, чтобы получить экземпляр Gson для использования:
GsonBuilder gb = new GsonBuilder();
gb.registerTypeAdapter( A.class, new ASerializer() );
Gson gson = gb.create();