در مواردی که یک رابط با جاوا سازگار نیست (چون برای مثال از اتحادیهها استفاده میکند) ممکن است همچنان مطلوب باشد که ثابتها (مقادیر enum) به دنیای جاوا صادر شود. این سناریو توسط hidl-gen -Ljava-constants …
که اعلانات enum مشروح شده را از فایل(های) رابط در یک بسته استخراج می کند و یک کتابخانه جاوا به نام [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
تولید می کند. . هر اعلامیه شماره ای که باید صادر شود را به صورت زیر حاشیه نویسی کنید:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
در صورت لزوم، نامی که تحت آن این نوع به دنیای جاوا صادر میشود، میتواند با نام انتخاب شده در اعلان رابط، با افزودن name
پارامتر annotation متفاوت باشد:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
اگر قراردادهای جاوا یا ترجیحات شخصی درخواست می کنند که یک پیشوند مشترک به مقادیر نوع 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, };
کلاس جاوا به صورت زیر ظاهر می شود:
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; }; };
در نهایت، اعلان نوع جاوا برای انواع enum اعلام شده در types.hal
در داخل یک کلاس Constants
در بسته داده شده گروه بندی می شود. انواع Enum که به عنوان فرزندان یک رابط اعلام شده اند، در اعلان کلاس جاوا آن رابط گروه بندی می شوند.