Сегодня я столкнулся с проблемой, используя SpringBoot, где у меня есть родительский абстрактный класс, который определяет защищенное поле, подобное этому, с аннотацией spring.
@Length(max=100)
protected String uuid;
В моем подклассе максимальное значение для аннотации @Length должно быть установлено на другое значение, и я ломаю голову над тем, как это сделать. После прочтения я подозреваю, что есть способ установить аннотации для переменных-членов класса в конструкторах классов, таким образом, я мог бы определить аннотацию @Length для переменной-члена uuid, а затем переопределить значение в дочернем конструкторе, но не нашел никаких примеров или документации если это вообще возможно. Приветствуются любые идеи или примеры того, как переопределить аннотации родительских защищенных переменных в подклассе с использованием Spring.
Это полный набор используемых аннотаций ...
@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\\S*")
protected String uniqueId
Я отредактировал вопрос, показывающий полный контекст и набор аннотаций, определенных в родительской переменной-члене.




В java нет такой вещи, как переопределение переменных. Только методы могут быть отменены. Последнее утверждение дает представление о том, как решить проблему. Если вы не укажете аннотацию свойства напрямую, а вместо этого укажете получатель конкретного поля, например, так:
class Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=100)
@Pattern(regexp = "\\S*")
public String getUniqueId(){
return uniqueId;
}
}
Затем вы можете переопределить эти свойства в дочернем классе, переопределив получатель:
class Child extends Parent{
private String uniqueId;
...
@ApiModelProperty("Unique ID For My Object")
@Length(max=200)
@Pattern(regexp = "\\S*")
public String getUniqueId(){
return uniqueId;
}
}
Я не проверял, могут ли эти аннотации применяться и к геттерам, но я ожидал этого.
Спасибо, что нашли время ответить, я попробую этот подход после обеда!
Так? Что случилось?
В каком контексте? Это столбец объекта?