java BuildConfigField决定如何定义成员(枚举)
建造。gradle(模块):
productFlavors {
mytest {
...
buildConfigField "boolean", "SHORT_ENUM", "false"
}
mysecondtest {
buildConfigField "boolean", "SHORT_ENUM", "true"
}
在MyClass中,我想根据我定义的buildConfigField在生成期间定义enum成员:
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;
}
}
....
}
但它不起作用。有可能做我想做的事吗?如果是的话,怎么办
# 1 楼答案
在这种情况下
BuildConfig.SHORT_ENUM
是boolean
只用
在任何情况下,你都不能这样做。 这取决于你想如何使用它们。您有很多选择:
# 2 楼答案
不能只在类定义中编写
if
语句Java中没有ifdef和ifndef
您可以做的是为每个产品风格创建java代码文件夹,然后在每个文件夹中正确创建枚举定义
示例:
app/src/debug/java/my/package/MyEnum。java
app/src/beta/java/my/package/MyEnum。爪哇
然后,当您构建debug时,它将使用debug版本,如果您构建beta版本,它将使用beta版本