java - 将变量传递给@Optional 注解
问题描述
我正在尝试使用 @Optional 注释将对象 pathToJsonFileAppCreate 作为可选参数传递。
public static final String pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");
@Parameters({"pathToJsonFileAppCreate"})
@BeforeSuite
public void SuiteSetup(@Optional(pathToJsonFileAppCreate) String pathToJsonFileAppCreate) {
虽然对象应该是常量(参见声明),但我仍然收到错误:“元素值必须是常量表达式”基本上我试图从属性文件中加载值(如果在 xml 中没有定义参数值) 或来自 xml 文件。
解决方案
注释在编译时进行评估。你说那个object should be constant
,但显然不是这样的
pathToJsonFileAppCreate = fprUploadBundle.getString("pathToJsonFile");
编译器无法知道运行时会返回什么。如果你认为这个值是常数,那么把那个常数放在那里。
理论上您可以在运行时修改该值(https://www.baeldung.com/java-reflection-change-annotation-params),但您必须确保在使用这些注释的任何内容尚未运行之前执行此操作.
无论如何,您似乎在滥用注释。注释来自哪个库?
推荐阅读
- python - python字典是什么数据结构?
- sql-server - 参数无效 - System.Drawing.Image.FromStream(Ms)
- inheritance - 设计评论系统的正确方法是什么?
- c++ - 来自 libicu 的 u_snprintf_u 的性能问题
- java - 计算机猜谜游戏中的消息对话框
- suitescript2.0 - suitescript 2.0 无法评估
- sql - 从一个表中选择与另一个表中的 id 匹配的所有列
- python - 在找到或未找到正则表达式模式时记录一条消息(详细 re.sub)
- json.net - 从动态忽略 C# 关键字序列化 JSON
- python - python re.sub() 函数添加附加字符 - e - 垃圾字符