Google 致力于为黑人社区推动种族平等。查看具体举措

导出常量

在接口不兼容 Java(例如由于使用联合类型而不兼容 Java)的情况下,可能仍需将常量(枚举值)导出到 Java 环境。这种情况需要用到 hidl-gen -Ljava-constants …,它会将已添加注解的枚举声明从软件包的接口文件中提取出来,并生成一个名为 [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants 的 java 库。请为每个要导出的枚举声明添加注解,如下所示:

    @export
    enum Foo : int32_t {
      SOME_VALUE,
      SOME_OTHER_VALUE,
    };
    

如有必要,这一类型导出到 Java 环境时所使用的名称可以不同于接口声明中选定的名称,方法是添加注解参数 name

    @export(name="JavaFoo")
    enum Foo : int32_t {
      SOME_VALUE,
      SOME_OTHER_VALUE,
    };
    

如果依据 Java 惯例或个人偏好需要将一个公共前缀添加到枚举类型的值,请使用注解参数 value_prefix

    // File "types.hal".

    package android.hardware.bar@1.0;

    @export(name="JavaFoo", value_prefix="JAVA_")
    enum Foo : int32_t {
      SOME_VALUE,
      SOME_OTHER_VALUE,
    };
    

生成的 Java 类如下所示:

    package android.hardware.bar.V1_0;

    public class Constants {
      public final class JavaFoo {
        public static final int JAVA_SOME_VALUE = 0;
        public static final int JAVA_SOME_OTHER_VALUE = 1;
      };
    };
    

最后,针对 types.hal 中声明的枚举类型的 Java 类型声明将划分到给定软件包中的类 Constants 内。声明为接口子级的枚举类型将划分到该接口的 Java 类声明下。