導出常量

在接口與 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 類聲明下。