Переопределение аннотаций защищенных переменных-членов родительского класса весной

Сегодня я столкнулся с проблемой, используя 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

В каком контексте? Это столбец объекта?

NiVeR 17.10.2018 20:54

Я отредактировал вопрос, показывающий полный контекст и набор аннотаций, определенных в родительской переменной-члене.

Duncan Krebs 17.10.2018 21:12
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
1
2
1 198
1

Ответы 1

В 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;
   }
}

Я не проверял, могут ли эти аннотации применяться и к геттерам, но я ожидал этого.

Спасибо, что нашли время ответить, я попробую этот подход после обеда!

Duncan Krebs 17.10.2018 21:29

Так? Что случилось?

NiVeR 18.10.2018 11:57

Другие вопросы по теме