Dalam kasus di mana antarmuka tidak kompatibel dengan Java (karena menggunakan serikat pekerja misalnya), mungkin masih diinginkan untuk mengekspor konstanta (nilai enum) ke dunia Java. Skenario ini didukung oleh hidl-gen -Ljava-constants …
yang mengekstrak deklarasi enum beranotasi dari file antarmuka dalam sebuah paket dan menghasilkan perpustakaan java bernama [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Beri anotasi pada setiap deklarasi enum yang akan diekspor sebagai berikut:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Jika perlu, nama di mana jenis ini diekspor ke dunia Java dapat berbeda dari yang dipilih dalam deklarasi antarmuka dengan menambahkan name
parameter anotasi :
@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 tipe enum, gunakan anotasi-parameter 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, };
Kelas Java yang dihasilkan muncul sebagai 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; }; };
Akhirnya, deklarasi tipe Java untuk tipe enum yang dideklarasikan di types.hal
dikelompokkan di dalam Constants
kelas dalam paket yang diberikan. Tipe enum yang dideklarasikan sebagai anak-anak dari sebuah antarmuka akan dikelompokkan di bawah deklarasi kelas Java antarmuka itu.