Вкратце: ваш подход создает аннотации с аннотациями - два уровня вложенности.Это не механизм группировки аннотаций.
Попробуйте думать как процессор аннотаций.В первом фрагменте кода процессор видит поле nick
и думает: «Хорошо, я знаю, как применить Pattern
и Size
к полю».
Во втором фрагменте кода дляполе nick
видит ValidNick
и думает: «Я не знаю аннотации такого типа, и я не знаю, как рассматривать это как ограничение поля».Процессор должен знать, что он должен перейти к аннотациям этой аннотации, и это - я считаю - не поддерживается "из коробки".
На вашем месте я бы не стал продвигаться к такой структуре кода,IMO это уменьшает читабельность, потому что для того, чтобы узнать ограничения Ника, вам нужно перейти к какой-то другой части кода.Теоретически это можно использовать повторно, но вопрос в том, сколько повторных использований у вас будет?
Если вы действительно хотите добиться чего-то похожего, вместо аннотаций, я бы дал делегированные свойства попыткаОни позволяют вам перехватывать сеттер и сохранять такую логику перехвата как класс многократного использования