Mengekspor konstanta

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.