build.gradle(模塊):productFlavors { mytest { ... buildConfigField "boolean", "SHORT_ENUM", "false" } mysecondtest { buildConfigField "boolean", "SHORT_ENUM", "true" }在 MyClass 中,我想根據(jù)我定義的 buildConfigField 在構(gòu)建期間定義枚舉成員: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條經(jīng)驗 獲得超5個贊
您不能只if
在類定義中編寫語句。
Java 中沒有 ifdef 和 ifndef。
您可以做的是為每個產(chǎn)品風格創(chuàng)建 java 代碼文件夾,然后在每個文件夾中正確創(chuàng)建枚舉定義。
示例:
app/src/debug/java/my/package/MyEnum.java
app/src/beta/java/my/package/MyEnum.java
然后,當您構(gòu)建 debug 時,它將使用 debug 版本,如果您構(gòu)建 beta,它將使用 beta 版本。

溫溫醬
TA貢獻1752條經(jīng)驗 獲得超4個贊
在這種情況下BuildConfig.SHORT_ENUM
是一個boolean
.
只需使用
if (BuildConfig.SHORT_ENUM){ ... }
無論如何,您不能以這種方式進行。這取決于您想如何使用它們。你有很多選擇:
您可以在不同的 buildTypes 中使用 2 個不同的類。
只需創(chuàng)建一個方法,該方法將根據(jù)條件返回值
添加回答
舉報
0/150
提交
取消