Можно определить класс с той же аннотацией дважды?Класс Java с повторяющейся аннотацией. Возможно?
К примеру, у меня есть @interface Аннотация
@Annotation(value = 1)
@Annotation(value = 2)
public class MyClass{
}
Можно определить класс с той же аннотацией дважды?Класс Java с повторяющейся аннотацией. Возможно?
К примеру, у меня есть @interface Аннотация
@Annotation(value = 1)
@Annotation(value = 2)
public class MyClass{
}
Да, вам необходимо определить Wrapper-Annotation:
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Target({ElementType.TYPE})
public @interface AnotationList {
Anotation[] value() default {};
}
Затем вы можете использовать его как это:
@AnotationList({
@Anotation(value = 1),
@Anotation(value = 2)
})
public class MyClass{
}
Это больше не требуется (явно) в [Java 8] (http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html). – dimo414
Вы можете указать другую аннотацию @Annotations
, значение которого представляет собой массив @Annotation
:
public @interface Annotations
{
public Annotation[] value();
}
Он используется как
@Annotations
(
{
@Anotation(value = 1)
, @Anotation(value = 2)
}
)
public class MyClass {
}
ли вы попробовать? – benzonico
Пока нет. Я попробую позже, но сейчас я занимаюсь дизайном. Спасибо – doterob
Насколько я помню (у меня был тот же вопрос некоторое время назад), это невозможно. Однако вы можете определить другую аннотацию '@ Annotations', значение которой представляет собой массив' @ Annotation'. Это делается, например, в JPA – Claude