در مواردی که یک میانای کاربر با جاوا سازگار نیست (مثلاً چون از اتحادیهها استفاده میکند)،
ممکن است همچنان مطلوب باشد که ثابتها (مقادیر شمارشی) به دنیای جاوا صادر شوند. این سناریو توسط hidl-gen -Ljava-constants
… پشتیبانی میشود که اعلامیههای شمارشی حاشیهگذاریشده را از فایل(های) میانای
در بسته استخراج میکند و کتابخانه جاوا با نام
[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 اضافه شود، از پارامتر حاشیهنویسی 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 در
بسته ارائهشده گروهبندی میشود. انواع شمارشی که بهعنوان فرزندان یک میانکار اعلام میشوند
در زیر اعلام کلاس Java آن میانکار گروهبندی میشوند.