Bir arabirimin Java ile uyumlu olmadığı durumlarda (örneğin sendikaları kullandığı için), sabitleri (enum değerleri) Java dünyasına aktarmak yine de istenebilir. Bu senaryo, bir paketteki arayüz dosyalarından açıklamalı numaralandırma bildirimlerini çıkaran ve [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
adlı bir Java kitaplığı üreten hidl-gen -Ljava-constants …
tarafından desteklenir. . Dışa aktarılacak her numaralandırma bildirimine aşağıdaki gibi açıklama ekleyin:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Gerekirse, bu türün Java dünyasına aktarıldığı ad, ek açıklama-parametre name
eklenerek arabirim bildiriminde seçilenden farklı olabilir:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Java kuralları veya kişisel tercih, enum türünün değerlerine ortak bir önek eklenmesini isterse, value_prefix
ek açıklama parametresini kullanın:
// File "types.hal". package android.hardware.bar@1.0; @export(name="JavaFoo", value_prefix="JAVA_") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Ortaya çıkan 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 bildirilen enum türleri için Java türü bildirimi, verilen pakette bir sınıf Constants
içinde gruplandırılmıştır. Bir arabirimin çocukları olarak bildirilen enum türleri, o arabirimin Java sınıf bildirimi altında gruplandırılacaktır.