Аннотации хороши тем, что они имеют пространство имен, позволяя нескольким API аннотировать одни и те же поля, не наступая друг другу на ноги:
@XmlTransient
делает его переходным к JAX-RS. @JsonIgnore
делает его переходным к Джексону. @Expose
, чтобы сделать его непереходным в GSON. - Вы можете использовать ни одного, ни одного, ни все.
К сожалению, аннотации впервые были поддержаны в Java 1.5 в 2004 году, а сериализация была добавлена в Java 1.1 в 1997 году.
Поскольку у них не было аннотаций, объявляемых пользователем, они вместо этого добавилиключевое слово transient
.Если бы он был выпущен сегодня, он, несомненно, использовал бы собственную аннотацию, специфичную для API сериализации.
JAX-RS решил рассматривать transient
, как если бы это была просто другая аннотация, специфичная для API.Это был хороший вызов, потому что легко добавлять аннотации другого API, но он может стать сложным и подверженным ошибкам, если несколько API пытаются интерпретировать аннотации друг друга.