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

标签 java reflection configuration annotations

我有以下类(class)。

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允许这样做吗?

最佳答案

属性值必须是常量。

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

Java does not allow for runtime annotation arguments: annotation parameters are stored at compile-time, and hence cannot be dynamic.

If T is a primitive type or String, and V is a constant expression (§15.28).

V is not null.

If T is Class, or an invocation of Class, and V is a class literal (§15.8.2).

If T is an enum type, and V is an enum constant.

就您而言,V不是常量表达式。

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

关于java - 如何将注释参数提取到外部文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29802014/

相关文章:

linux - 根据conf文件替换文件的值

git - 禁用 git 暂存区

java - 在android中创建软键盘时出错

objective-c - 使用 objc_msgSend 调用带有命名参数的 Objective C 函数

javascript - 在 TypeScript 中凝胶化一个类的所有模型属性

java - 原始类型的反射映射

python - 如何在 default.conf 文件中创建数组或列表

java - 如何找到字符串中最高的字母?

java - 将XML文件插入MYSQL数据库

java - 无法保留 Volley 响应值以供进一步使用,它变为空