ऐसे मामलों में जहां कोई इंटरफ़ेस 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 कन्वेंशन या निजी प्राथमिकता के लिए एक सामान्य प्रीफ़िक्स
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
क्लास के अंदर ग्रुप किया जाता है
दिया गया पैकेज. किसी इंटरफ़ेस के चाइल्ड के तौर पर बताए गए Enum टाइप, ग्रुप में मौजूद होते हैं
के बाद उस इंटरफ़ेस के Java क्लास डिक्लेरेशन के ज़रिए डाउनलोड करें.