ส่งออกค่าคงที่

ในกรณีที่อินเทอร์เฟซไม่สามารถทำงานร่วมกับ Java (เนื่องจากใช้ยูเนียน) เป็นต้น) อาจยังคงต้องการส่งออกค่าคงที่ (ค่า enum) ไปยัง โลกของชวา สถานการณ์นี้รองรับโดย hidl-gen -Ljava-constants … ซึ่งแยกการประกาศ enum ที่มีคำอธิบายประกอบออกจากอินเทอร์เฟซ ในแพ็กเกจและสร้างไลบรารี Java ชื่อ [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants ใส่คำอธิบายประกอบในแต่ละรายการ ประกาศ enum ที่จะส่งออกดังนี้

@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 หรือความชอบส่วนบุคคลขอคำนำหน้าทั่วไปเป็น เพิ่มลงในค่าของประเภท enum ให้ใช้พารามิเตอร์คำอธิบายประกอบ 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;
  };
};

สุดท้าย การประกาศประเภท Java สำหรับประเภท enum ที่ประกาศใน types.hal ได้รับการจัดกลุ่มไว้ในชั้นเรียน Constants ใน แพ็กเกจที่ให้มา ระบบจะจัดกลุ่มประเภท Enum ที่ประกาศว่าเป็นองค์ประกอบย่อยของอินเทอร์เฟซ ใต้การประกาศคลาส Java ของอินเทอร์เฟซนั้นๆ