Jika antarmuka tidak kompatibel dengan Java (misalnya karena menggunakan union), Anda mungkin masih ingin mengekspor konstanta (nilai enum) ke
dunia Java. Skenario ini didukung oleh hidl-gen -Ljava-constants
…
yang mengekstrak deklarasi enum yang dianotasi dari file
antarmuka dalam paket dan menghasilkan library java bernama
[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Anotasikan setiap
deklarasi enum yang akan diekspor sebagai berikut:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Jika perlu, nama tempat jenis ini diekspor ke dunia Java
dapat berbeda dengan yang dipilih dalam deklarasi antarmuka dengan menambahkan
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 terlihat 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
dalam
paket yang diberikan. Jenis enum yang dideklarasikan sebagai turunan antarmuka dikelompokkan
di bawah deklarasi class Java antarmuka tersebut.