有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将变量传递到@Optional注释

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

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

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

虽然对象应该是常量(请参见声明),但我仍然得到错误:“元素值必须是常量表达式” 基本上,我尝试从属性文件(在xml中没有定义参数值的情况下)或xml文件加载值


共 (1) 个答案

  1. # 1 楼答案

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

    pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");
    

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

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

    不管怎样,看起来你误用了注释。注释来自哪个库