将变量传递给@Optional注释

时间:2019-04-26 14:47:59

标签: java annotations

我正在尝试使用@Optional注释将对象pathToJsonFileAppCreate作为可选参数传递。

 public static final String pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");

 @Parameters({"pathToJsonFileAppCreate"})
 @BeforeSuite
    public void SuiteSetup(@Optional(pathToJsonFileAppCreate) String pathToJsonFileAppCreate) {

尽管对象应该是常量(请参见声明),但仍然出现错误:“元素值必须是常量表达式” 基本上,我试图从属性文件(如果在xml中未定义任何参数值)或xml文件中加载值。

1 个答案:

答案 0 :(得分:0)

注释在编译时进行评估。您说的是object should be constant,但事实并非如此

pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");

编译器不知道在运行时将返回什么。 如果您认为该值是常数,则将该常数放在此处。

从理论上讲,您可以在运行时修改值(https://www.baeldung.com/java-reflection-change-annotation-params),但必须确保在使用这些批注的任何操作尚未运行之前就进行了修改。

无论如何,您似乎滥用了注释。注释来自什么库?