Eksportuj stałe

Gdy interfejs nie jest zgodny z Javą (ponieważ stosowane są sumy na przykład) nadal warto eksportować stałe (wartości wyliczeniowe) do funkcji i świecie Javy. Ten scenariusz jest obsługiwany przez funkcję hidl-gen -Ljava-constants …, która wyodrębnia deklaracje wyliczeniowe z adnotacjami z interfejsu plików w pakiecie i tworzy bibliotekę Java o nazwie [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants Dodaj do każdego z nich adnotacje deklaracja wyliczeniowa do wyeksportowania w następujący sposób:

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

W razie potrzeby nazwa, pod którą dany typ jest eksportowany do świata Javy mogą się różnić od tego wybranego w deklaracji interfejsu, dodając parametr parametr adnotacji name:

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

Jeśli konwencje języka Java lub osobiste preferencje wymagają podania wspólnego prefiksu dodany do wartości typu wyliczeniowego, 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,
};

Powstała 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 Javy dla typów wyliczeniowych zadeklarowanych w types.hal są zgrupowane w klasie Constants w danej przesyłki. Typy typów wyliczeniowych zadeklarowane jako elementy podrzędne interfejsu są grupowane w ramach deklaracji klasy Java tego interfejsu.