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; } } ....}但它不起作用。有沒(méi)有可能做我想做的事?如果是,那么如何?
2 回答

慕工程0101907
TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊
您不能只if
在類定義中編寫語(yǔ)句。
Java 中沒(méi)有 ifdef 和 ifndef。
您可以做的是為每個(gè)產(chǎn)品風(fēng)格創(chuàng)建 java 代碼文件夾,然后在每個(gè)文件夾中正確創(chuàng)建枚舉定義。
示例:
app/src/debug/java/my/package/MyEnum.java
app/src/beta/java/my/package/MyEnum.java
然后,當(dāng)您構(gòu)建 debug 時(shí),它將使用 debug 版本,如果您構(gòu)建 beta,它將使用 beta 版本。

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