导出常量

如果某个接口不兼容 Java(例如,因为它使用了联合),可能仍然需要将常量(枚举值)导出到 Java 世界。 hidl-gen -Ljava-constants … 支持此场景,它会从软件包中的接口文件提取带注解的枚举声明,并生成一个名为 [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants 的 Java 库。 如下所示,注解每个要导出的枚举声明

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

如有必要,可以通过添加注解参数 name,使此类型导出到 Java 世界时所用的名称与接口声明中选择的名称不同

@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 类声明下。