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

ในกรณีที่อินเทอร์เฟซไม่เข้ากันได้กับ Java (เนื่องจากใช้ยูเนียน เป็นต้น) คุณอาจยังต้องการส่งออกค่าคงที่ (ค่า Enum) ไปยังโลก Java 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 ของอินเทอร์เฟซนั้น