ייצוא קבועים

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

אם צריך, אפשר להוסיף את הפרמטר name כדי לשנות את השם שבו הסוג הזה מיוצא לעולם Java, בהשוואה לשם שנבחר בהצהרה על הממשק:

@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 של אותו ממשק.