קבועי ייצוא

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