猿问

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

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;

        }

    }

    ....

}

但它不起作用。有没有可能做我想做的事?如果是,那么如何?


开心每一天1111
浏览 106回答 2
2回答

慕工程0101907

您不能只if在类定义中编写语句。Java 中没有 ifdef 和 ifndef。您可以做的是为每个产品风格创建 java 代码文件夹,然后在每个文件夹中正确创建枚举定义。示例:app/src/debug/java/my/package/MyEnum.javaapp/src/beta/java/my/package/MyEnum.java然后,当您构建 debug 时,它将使用 debug 版本,如果您构建 beta,它将使用 beta 版本。

温温酱

在这种情况下BuildConfig.SHORT_ENUM是一个boolean.只需使用if (BuildConfig.SHORT_ENUM){   ... }无论如何,您不能以这种方式进行。这取决于您想如何使用它们。你有很多选择:您可以在不同的 buildTypes 中使用 2 个不同的类。只需创建一个方法,该方法将根据条件返回值
随时随地看视频慕课网APP

相关分类

Java
我要回答