ในกรณีที่อินเทอร์เฟซไม่สามารถทำงานร่วมกับ 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 ของอินเทอร์เฟซนั้นๆ