有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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;
        }
    }
    ....
}

但它不起作用。有可能做我想做的事吗?如果是的话,怎么办


共 (2) 个答案

  1. # 1 楼答案

    在这种情况下BuildConfig.SHORT_ENUMboolean

    只用

    if (BuildConfig.SHORT_ENUM){
      ...
    }
    

    在任何情况下,你都不能这样做。 这取决于你想如何使用它们。您有很多选择:

    • 您可以在不同的构建类型中使用2个不同的类
    • 只需创建一个方法,该方法将根据条件返回值
  2. # 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版本