У мене є два анотації з рамки. Часто я використовую ці два анотації обидва в одному полі. Таким чином, я намагаюся створити "комбіновану" анотацію, яка містить це два.
Але я не знаю, чи можливо це взагалі:
Існуючі примітки (що я не маю контролю):
@Target({ElementType.PARAMETER, ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiParam {
String name() default "";
}
@Target({ElementType.METHOD, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public @interface ApiModelProperty {
String name() default "";
}
Моя спеціальна примітка що я намагаюся створити:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.ANNOTATION_TYPE)
@ApiParam
@ApiModelProperty
public @interface SwaggerParam {
String name() default "";
}
Результат: анотації є не застосовується до типу приміток.
Питання: Чи є шанс?
Відповіді:
1 для відповіді № 1На жаль, цього не можна робити, оскільки анотації розширити неможливо.
Чи є щось схоже на спадкування анотацій у java?
Коли я вперше відповів на це, я був спочаткузаплутаний рамковим підходом Spring до цього недоліку, завдяки якому вони використовують анотації метарів (наприклад, @Component як метаанотація для @ Controller / @ Configuration тощо) як своєрідне вирішення.