Stałe eksportu

W przypadku interfejsu, który nie jest zgodny z językiem Java (np. używa złączeń), warto jednak wyeksportować stałe (wartości wyliczenia) do świata Javy. Ten scenariusz jest obsługiwany przez narzędzie hidl-gen -Ljava-constants …, które wyodrębnia opatrzone adnotacjami deklaracje typów enum z plików interfejsu w pakiecie i tworzy bibliotekę Java o nazwie [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Dodaj adnotacje do każdej deklaracji enum, która ma być eksportowana:

@export
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

W razie potrzeby nazwa, pod którą typ jest eksportowany do świata Javy, może być inna niż wybrana w deklaracji interfejsu. Aby to zmienić, dodaj parametr adnotacji name:

@export(name="JavaFoo")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Jeśli ze względu na konwencje języka Java lub osobiste preferencje chcesz dodać wspólny prefiks do wartości typu enum, użyj parametru adnotacji: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,
};

Wynikowa klasa Java wygląda tak:

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;
  };
};

Na koniec deklaracja typu Java dla typów wyliczenia zadeklarowanych w types.hal jest grupowana w klasie Constants w danym pakiecie. Typy enumeracji zadeklarowane jako podrzędne interfejsu są grupowane w deklaracji klasy Java tego interfejsu.