Xuất hằng số

Trong trường hợp giao diện không tương thích với Java (ví dụ: giao diện sử dụng các liên kết), bạn vẫn nên xuất các hằng số (giá trị enum) sang thế giới Java. hidl-gen -Ljava-constants … hỗ trợ trường hợp này, trích xuất các phần khai báo enum được chú thích từ(các) tệp giao diện trong một gói và tạo một thư viện java có tên [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Chú thích từng khai báo enum cần xuất như sau:

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

Nếu cần, tên mà loại này được xuất sang thế giới Java có thể khác với tên được chọn trong phần khai báo giao diện bằng cách thêm tham số chú thích name:

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

Nếu quy ước Java hoặc lựa chọn ưu tiên cá nhân yêu cầu thêm một tiền tố phổ biến vào các giá trị của loại enum, hãy sử dụng tham số chú giải 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,
};

Lớp Java thu được sẽ có dạng như sau:

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

Cuối cùng, phần khai báo loại Java cho các loại enum được khai báo trong types.hal được nhóm bên trong một lớp Constants trong gói đã cho. Các loại enum được khai báo là con của một giao diện được nhóm trong phần khai báo lớp Java của giao diện đó.