במקרים שבהם ממשק לא תואם ל-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
בחבילה הנתונה. סוגי הטיפוסים של טיפוסים שמוצהרים כצאצאים של ממשק מקובצים
בהצהרה של מחלקת Java של הממשק.