ধ্রুবক এক্সপোর্ট করা

যেসব ক্ষেত্রে ইন্টারফেস 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 কনভেনশন বা ব্যক্তিগত পছন্দ অনুযায়ী 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,
};

ফলস্বরূপ পাওয়া 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;
  };
};

অবশেষে, types.hal-এ ঘোষিত enum টাইপের জন্য Java টাইপ ঘোষণা, প্রদত্ত প্যাকেজে Constants ক্লাসের মধ্যে গ্রুপ করা হয়। কোনও ইন্টারফেসের চাইল্ড হিসেবে ঘোষণা করা এনুম টাইপগুলিকে সেই ইন্টারফেসের জাভা ক্লাস ঘোষণার অধীনে গ্রুপ করা হয়।