در مواردی که یک رابط با جاوا سازگار نیست (چون برای مثال از اتحادیه ها استفاده می کند) ممکن است همچنان مطلوب باشد که ثابت ها (مقادیر 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 که به عنوان فرزندان یک رابط اعلام شده اند، در اعلان کلاس جاوا آن رابط گروه بندی می شوند.