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

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

@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 أو التفضيل الشخصي يطلبون أن تكون بادئة مشتركة مضافة إلى قيم نوع التعداد، فاستخدم معلمة التعليق التوضيحي 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 لتلك الواجهة.