如何将注释参数提取到外部文件中?

时间:2015-04-22 15:20:31

标签: java reflection configuration annotations

我有下课。

public class MultipartFileWrapper {
    @Extensions({".jpg",".png",".gif",".bmp",".mp4"})
    MultipartFile multipartFile;  
    ...
}

现在我想将格式提取到配置文件中。 但我不明白如何更换

@Extensions({".jpg",".png",".gif",".bmp",".mp4"})

我想重写一下这样的内容:

public class MultipartFileWrapper {
        @Extensions(readFormatsFromFile())
        MultipartFile multipartFile;  
        ...
    }

格式应来自具有以下内容的外部文件:

.jpg,.png,.gif,.bmp,.mp4

java允许这样做吗?

1 个答案:

答案 0 :(得分:2)

属性值必须是常量。

来自Java Language Specification, section 9.7.1,强调我的:

  

Java不允许运行时注释参数:注释   参数在编译时存储,因此不能是动态的。

     

如果T是基本类型或字符串, V是常量表达式   (§15.28)。

     

V不为空。

     

如果T是Class,或者是Class的调用,则V是类文字   (§15.8.2)。

     

如果T是枚举类型,则V是枚举常量。

在您的情况下,V 不是常量表达式。

除此之外,除非通过@Retention(RetentionPolicy.RUNTIME)明确指定,否则许多注释可能不会保留在已编译的代码中。