【问题标题】:Why I get an attribute value must be a constant error? [duplicate]为什么我得到一个属性值一定是一个常量错误? [复制]
【发布时间】:2019-09-06 11:36:06
【问题描述】:

虽然变量是最终变量,但我收到“属性值必须是常量”的错误。

protected final String APP_PACKAGE = abstractPlatform.getPropertiesReader().getPackageName();

    @AndroidFindBy(id = APP_PACKAGE +":id/btnSignUp")
private MobileElement signUpTab;

如果我使用常规字符串初始化 APP_PACKAGE,那么我不会收到此错误。例如:APP_PACKAGE = "com.company.aa"; 如您所见,APP_PACKAGE 是最终版本,为什么我会收到此错误? 有什么我想念的吗?

谢谢

【问题讨论】:

    标签: java


    【解决方案1】:

    注解的属性必须是编译时常量和

    abstractPlatform.getPropertiesReader().getPackageName();
    

    只能在运行时解析。这意味着APP_PACKAGE 不是编译时常量。

    【讨论】:

    • 除了使用常规字符串设置 APP_PACKAGE 值之外,还有其他方法可以使其成为编译时常量吗?
    • @shay7 您可以在构建时替换常量。一个例子是Maven Templating Plugin:“如果您需要将代码中的内容替换为某些属性值,那么这个插件对于过滤 Java 源代码很有用”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    • 1970-01-01
    相关资源
    最近更新 更多