如果某个接口不兼容 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 类声明下。