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

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