首页 > 解决方案 > 将变量传递给@Optional 注解

问题描述

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

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

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

虽然对象应该是常量(参见声明),但我仍然收到错误:“元素值必须是常量表达式”基本上我试图从属性文件中加载值(如果在 xml 中没有定义参数值) 或来自 xml 文件。

标签: javaannotations

解决方案


注释在编译时进行评估。你说那个object should be constant,但显然不是这样的

pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");

编译器无法知道运行时会返回什么。如果你认为这个值是常数,那么把那个常数放在那里。

理论上您可以在运行时修改该值(https://www.baeldung.com/java-reflection-change-annotation-params),但您必须确保在使用这些注释的任何内容尚未运行之前执行此操作.

无论如何,您似乎在滥用注释。注释来自哪个库?


推荐阅读