为了账号安全,请及时绑定邮箱和手机立即绑定

BuildConfigField 决定如何定义成员(枚举)

BuildConfigField 决定如何定义成员(枚举)

开心每一天1111 2023-06-14 16:02:50
build.gradle(模块):productFlavors {    mytest {        ...        buildConfigField "boolean", "SHORT_ENUM", "false"    }    mysecondtest {        buildConfigField "boolean", "SHORT_ENUM", "true"    }在 MyClass 中,我想根据我定义的 buildConfigField 在构建期间定义枚举成员:public class MyClass {    // members initialization    public enum MYENUM {        if (BuildConfig.SHORT_ENUM) {            FIRST(0),            SECOND(1);        }        else { // SHORT_ENUM is false            FIRST(0),            SECOND(1),            THIRD(2),            FORTH(3);        }        private int value;        MYENUM(int v) {            value = v;        }    }    ....}但它不起作用。有没有可能做我想做的事?如果是,那么如何?
查看完整描述

2 回答

?
慕工程0101907

TA贡献1887条经验 获得超5个赞

您不能只if在类定义中编写语句。

Java 中没有 ifdef 和 ifndef。

您可以做的是为每个产品风格创建 java 代码文件夹,然后在每个文件夹中正确创建枚举定义。

示例:
app/src/debug/java/my/package/MyEnum.java
app/src/beta/java/my/package/MyEnum.java

然后,当您构建 debug 时,它将使用 debug 版本,如果您构建 beta,它将使用 beta 版本。


查看完整回答
反对 回复 2023-06-14
?
温温酱

TA贡献1752条经验 获得超4个赞

在这种情况下BuildConfig.SHORT_ENUM是一个boolean.

只需使用

if (BuildConfig.SHORT_ENUM){
  ...
}

无论如何,您不能以这种方式进行。这取决于您想如何使用它们。你有很多选择:

  • 您可以在不同的 buildTypes 中使用 2 个不同的类。

  • 只需创建一个方法,该方法将根据条件返回值


查看完整回答
反对 回复 2023-06-14
  • 2 回答
  • 0 关注
  • 105 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信