Eksportowanie stałych

W przypadkach, gdy interfejs nie jest kompatybilny z Javą (ponieważ używa na przykład unii) nadal może być pożądane wyeksportowanie stałych (wartości wyliczanych) do świata Javy. Ten scenariusz jest obsługiwany przez hidl-gen -Ljava-constants … , który wyodrębnia deklaracje wyliczenia z adnotacjami z plików interfejsu w pakiecie i tworzy bibliotekę java o nazwie [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . Opisać każdą deklarację wyliczenia, która ma zostać wywieziona, w następujący sposób:

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

W razie potrzeby nazwa, pod którą ten typ jest eksportowany do świata Javy, może różnić się od wybranej w deklaracji interfejsu poprzez dodanie name parametru adnotacji :

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

Jeśli konwencje Java lub osobiste preferencje wymagają dodania wspólnego prefiksu do wartości typu wyliczenia, 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 następująco:

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

Wreszcie deklaracje typu Java dla typów wyliczeniowych zadeklarowanych w types.hal są zgrupowane wewnątrz klasy Constants w danym pakiecie. Typy wyliczeniowe zadeklarowane jako elementy podrzędne interfejsu zostaną zgrupowane w deklaracji klasy Java tego interfejsu.