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,

Другие вопросы по тегам