במקרים שבהם ממשק לא תואם ל-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 של הממשק.