Bir arayüzün Java ile uyumlu olmadığı durumlarda (örneğin, birleştirme kullandığı için) sabitleri (enum değerleri) Java dünyasına aktarmak yine de istenebilir. Bu senaryo, bir paketteki arayüz dosyalarından ek açıklamalı enum tanımları ayıklayan ve [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
adlı bir Java kitaplığı oluşturan hidl-gen -Ljava-constants
…
tarafından desteklenir. Dışa aktarılacak her enum beyanını aşağıdaki şekilde ek açıklamayla belirtin:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Gerekirse, bu türün Java dünyasına aktarıldığı ad, name
ek açıklama parametresi eklenerek arayüz beyanında seçilen addan farklı olabilir:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Java kuralları veya kişisel tercihler, enum türündeki değerlere ortak bir ön ek eklenmesini gerektiriyorsa ek açıklama parametresini kullanınvalue_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, };
Sonuçta oluşturulan Java sınıfı aşağıdaki gibi görünür:
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; }; };
Son olarak, types.hal
içinde tanımlanan enum türleri için Java türü beyanı, belirli paketteki bir Constants
sınıfı içinde gruplandırılır. Bir arayüzün alt öğesi olarak tanımlanan enum türleri, söz konusu arayüzün Java sınıfı beyanı altında gruplandırılır.