تصدير الثوابت

في الحالات التي لا تكون فيها الواجهة متوافقة مع Java (لأنّها تستخدم مجموعات تضامنية مثلاً)، قد يظل من المستحسن تصدير الثوابت (قيم التعداد) إلى عالم Java. يتيح hidl-gen -Ljava-constants … هذا السيناريو، إذ يستخرج hidl-gen -Ljava-constants … بيانات التعداد المُشارَك إليها من ملفّات الواجهة في حزمة معيّنة وينشئ مكتبة java باسم [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. أضِف تعليقًا توضيحيًا لكل تعريف قائمة بقيم متسلسلة ليتم تصديره على النحو التالي:

@export
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

إذا لزم الأمر، يمكن أن يختلف الاسم الذي يتم تصدير هذا النوع به إلى عالم Java عن الاسم الذي تم اختياره في بيان الواجهة عن طريق إضافة المَعلمة annotation-parameter 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 لأنواع التعداد التي تمّ الإعلان عنها في types.hal داخل فئة Constants في الحزمة المحدّدة. يتم تجميع أنواع التعداد التي تمّ الإعلان عنها كعناصر فرعية لواجهة تحت تعريف فئة Java لهذه الواجهة.