我正在使用readlink -f "$SOURCEDIR/.."
和AutoValue
,但是在AutoGson
无法正常工作时遇到了问题。
我有这个模型:
@SerializedName
我正在注册@AutoValue
@AutoGson(autoClass = AutoValue_ItemResponse.class)
public abstract class ItemResponse {
public static ItemResponse create(final String stat) {
return new AutoValue_ItemResponse(stat);
}
// public static TypeAdapter<ItemResponse> typeAdapter(Gson gson) {
// return new AutoValue_ItemResponse.GsonTypeAdapter(gson);
// }
@SerializedName("status")
public abstract String stat();
}
:
TypeAdapterFactory
使用上述方法,@SuppressWarnings("unchecked")
public class CustomTypeAdapterFactory implements TypeAdapterFactory {
@Override
public <T> TypeAdapter<T> create(Gson gson, TypeToken<T> type) {
Class<T> rawType = (Class<T>) type.getRawType();
AutoGson annotation = rawType.getAnnotation(AutoGson.class);
if (annotation == null) {
return null;
}
return (TypeAdapter<T>) gson.getAdapter(annotation.autoClass());
}
}
的值始终为stat
。
现在,如果我取消注释null
中的代码,即ItemResponse
,而是将波纹管注册为TypeAdapter
TypeAdapterFactory
@GsonTypeAdapterFactory
public abstract class SampleAdapterFactory implements TypeAdapterFactory {
public static SampleAdapterFactory create() {
return new AutoValueGson_SampleAdapterFactory();
}
}
返回正确的值。
有人知道为什么第一种方法没有对stat
进行反序列化吗?
谢谢。