Mengekspor Konstanta

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.