Java аннотация не может получить параметр в виде константного массива
Сначала я использую аннотацию для получения некоторых параметров, String и String[], например
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
public @interface RedisCacheAble {
String value() default "";
String[] names() default {};
}
@RedisCacheAble(value="XXOO",names = {"a","b"} )
public OrderDetailPO orderTestAble(String op) {}
Затем мой менеджер сказал, что значение и имена должны использовать const, потому что это может использовать другое место, поэтому я изменяю свой код следующим образом:
public static final String XXOO = "xxoo";
public static final String XOARR = {"orderCode","accountId"};
@RedisCacheAble(value=XXOO, names = XOARR )
public OrderDetailPO orderTestAble(String op) { //
}
к сожалению, затмение выдает ошибку: XOARR должен инициализироваться как массив, так что кажется, что аннотация не может распознать константный массив, кто-нибудь знает почему?
1 ответ
Потому что значение атрибута аннотации должно быть постоянным. Но даже ваш массив является окончательным, его содержимое также изменчиво. Так что это не аннотация не может распознать const array
, здесь нет const array
,