Согласно документации:
@Target({ElementType.FIELD, ElementType.METHOD})
public @interface SerializedName {
Аннотация SerializedName
предназначена для использования с полями или методами ... но я никогда не видел пример того, как использовать его с методами .
Но знайте, у меня есть ситуация, когда это было бы очень полезно
У меня есть BasicReponse и несколько других ответов, расширяющих его.
Я хотел бы объявить основной объект в этом ответе и переименуйте его в соответствии со специализированным ответом
ex:
public class BasicResponse<T> {
protected T data;
@SerializedName("status")
protected String status;
//other fields
}
public class ChallengeResponse extends BasicResponse<StepData> {
@SerializedName("step_name")
private String stepName;
@SerializedName("user_id")
private long userId;
@SerializedName("nonce_code")
private String nounce;
@SerializedName("action")
private String action;
}
Поэтому я хотел бы, чтобы поле data
из basicResponse
получило элемент json с именем step_data
типа StepData
case я десериализую в ChallengeResponse
.
как это сделать?
могу ли я переопределить аннотацию из суперкласса? если бы я мог использовать аннотацию для методов get / set, было бы очень просто переопределить их для каждого специализированного ответа.
Кто-нибудь знает простой способ решения проблемы?