निर्यात स्थिरांक

ऐसे मामलों में जहां एक इंटरफ़ेस जावा-संगत नहीं है (क्योंकि यह उदाहरण के लिए यूनियनों का उपयोग करता है) यह अभी भी जावा दुनिया में स्थिरांक (एनम मान) निर्यात करने के लिए वांछनीय हो सकता है। यह परिदृश्य hidl-gen -Ljava-constants … जो एक पैकेज में इंटरफ़ेस फ़ाइल (फ़ाइलों) से एनोटेट एनम घोषणाओं को निकालता है और [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants नामक एक जावा लाइब्रेरी का निर्माण करता है। . निर्यात की जाने वाली प्रत्येक एनम घोषणा को निम्नानुसार एनोटेट करें:

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

यदि आवश्यक हो, तो जिस नाम के तहत इस प्रकार को जावा दुनिया में निर्यात किया जाता है, वह एनोटेशन-पैरामीटर name जोड़कर इंटरफ़ेस घोषणा में चुने गए नाम से भिन्न हो सकता है:

@export(name="JavaFoo")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

यदि जावा सम्मेलन या व्यक्तिगत वरीयता एनम प्रकार के मूल्यों में एक सामान्य उपसर्ग जोड़ने के लिए कहती है, तो एनोटेशन-पैरामीटर 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,
};

परिणामी जावा वर्ग इस प्रकार दिखाई देता है:

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 में घोषित एनम प्रकारों के लिए जावा प्रकार की घोषणा को दिए गए पैकेज में एक वर्ग Constants के अंदर समूहीकृत किया जाता है। एक इंटरफ़ेस के बच्चों के रूप में घोषित एनम प्रकारों को उस इंटरफ़ेस के जावा क्लास डिक्लेरेशन के तहत समूहीकृत किया जाएगा।