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 版本。
温温酱
TA贡献1752条经验 获得超4个赞
在这种情况下BuildConfig.SHORT_ENUM
是一个boolean
.
只需使用
if (BuildConfig.SHORT_ENUM){ ... }
无论如何,您不能以这种方式进行。这取决于您想如何使用它们。你有很多选择:
您可以在不同的 buildTypes 中使用 2 个不同的类。
只需创建一个方法,该方法将根据条件返回值
添加回答
举报
0/150
提交
取消