Xuất hằng số

Trong trường hợp một giao diện không tương thích với Java (vì nó sử dụng các hợp nhất chẳng hạn) thì vẫn có thể mong muốn xuất các hằng số (giá trị enum) sang thế giới Java. Kịch bản này được hỗ trợ bởi hidl-gen -Ljava-constants … trích xuất các khai báo enum có chú thích từ (các) tệp giao diện trong một gói và tạo ra 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 sẽ được xuất như sau:

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

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

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

Nếu quy ước Java hoặc sở thích cá nhân yêu cầu thêm tiền tố chung vào các giá trị của kiểu enum, hãy sử dụng annotation-parameter 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 kết quả xuất hiện 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, khai báo kiểu Java cho các kiểu enum được khai báo trong types.hal được nhóm bên trong một Constants số lớp trong gói đã cho. Các kiểu enum được khai báo là con của một giao diện sẽ được nhóm lại theo khai báo lớp Java của giao diện đó.