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

ในกรณีที่อินเทอร์เฟซไม่รองรับ 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 ให้ใช้ 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,
};

คลาส 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 ของอินเทอร์เฟซนั้น