2013-03-14 3 views
0

Можно определить класс с той же аннотацией дважды?Класс Java с повторяющейся аннотацией. Возможно?

К примеру, у меня есть @interface Аннотация

@Annotation(value = 1) 
@Annotation(value = 2) 
public class MyClass{ 
} 
+5

ли вы попробовать? – benzonico

+0

Пока нет. Я попробую позже, но сейчас я занимаюсь дизайном. Спасибо – doterob

+0

Насколько я помню (у меня был тот же вопрос некоторое время назад), это невозможно. Однако вы можете определить другую аннотацию '@ Annotations', значение которой представляет собой массив' @ Annotation'. Это делается, например, в JPA – Claude

ответ

3

Да, вам необходимо определить 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{ 
} 
+0

Это больше не требуется (явно) в [Java 8] (http://docs.oracle.com/javase/tutorial/java/annotations/repeating.html). – dimo414

2

Вы можете указать другую аннотацию @Annotations, значение которого представляет собой массив @Annotation:

public @interface Annotations 
{ 
    public Annotation[] value(); 
} 

Он используется как

@Annotations 
(
    { 
    @Anotation(value = 1) 
    , @Anotation(value = 2) 
    } 
) 
public class MyClass { 
} 
Смежные вопросы