Переопределение аннотаций переменных-членов защищенного родительского класса весной - PullRequest
0 голосов
/ 17 октября 2018

Сегодня я столкнулся с проблемой, используя SpringBoot, где у меня есть родительский абстрактный класс, который определяет защищенное поле, подобное этому, с аннотацией весны.

@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

1 Ответ

0 голосов
/ 17 октября 2018

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

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

...