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