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