Dalam kasus jika antarmuka tidak kompatibel dengan Java (karena menggunakan gabungan
misalnya) mungkin masih diinginkan untuk mengekspor konstanta (nilai enum) ke
di dunia Java. Skenario ini didukung oleh hidl-gen -Ljava-constants
…
yang mengekstrak deklarasi enum yang dianotasi dari antarmuka
file dalam sebuah paket dan menghasilkan {i>library<i} java yang bernama
[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Beri anotasi masing-masing
deklarasi enum untuk diekspor sebagai berikut:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Jika perlu, nama yang digunakan untuk mengekspor jenis ini ke dunia Java
bisa berbeda dari yang dipilih dalam deklarasi antarmuka dengan menambahkan atribut
parameter anotasi name
:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Jika konvensi Java atau preferensi pribadi meminta awalan umum untuk
ditambahkan ke nilai jenis enum, gunakan parameter anotasi
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, };
Class Java yang dihasilkan akan muncul seperti berikut:
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; }; };
Terakhir, deklarasi jenis Java untuk jenis enum yang dideklarasikan di
types.hal
dikelompokkan di dalam class Constants
di
paket tertentu. Jenis enum yang dideklarasikan sebagai turunan antarmuka dikelompokkan
di bawah deklarasi class Java antarmuka tersebut.