Почему это не работает […]?
Аннотация @JsonValue
разрешена только в объявлениях методов и в объявлениях других типов аннотаций;поэтому, с Ломбоком или без него, вы не можете поставить его на поле.(Если вы посмотрите на его Javadoc , вы увидите, что он помечен @Target(value={ANNOTATION_TYPE,METHOD})
.)
Хорошая новость заключается в том, что @JsonValue
применяется только к методам получения (не к методам установки)., методы построения и т. д.), и может быть только один из них на класс, так что нет ничего сложного в том, чтобы просто вручную создать этот один метод получения:
@NotNull
private Long value;
@JsonValue
public Long getValue() {
return value;
}
Если вам действительно это не нравится, тогда выможет использовать экспериментальную функцию onMethod
Lombok:
@NotNull
@Getter(onMethod=@__({@JsonValue}))
private Long value;
, которая эквивалентна вышеупомянутой, за исключением экспериментальной (поэтому она может измениться или исчезнуть в будущих версиях Lombok и / или Java).