Mengekspor konstanta

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.