ייצוא קבועים

במקרים בהם ממשק אינו תואם ל-Java (מכיוון שהוא משתמש באיחודים למשל) עדיין יכול להיות רצוי לייצא את הקבועים (ערכי ה-enum) לעולם ה-Java. תרחיש זה נתמך על ידי hidl-gen -Ljava-constants … אשר מחלץ הצהרות enum מוערות מקבצי הממשק בחבילה ומייצר ספריית java בשם [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . סמן כל הצהרת מצוות לייצוא באופן הבא:

@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, השתמש ב-annotation-parameter 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 Class של ממשק זה.