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.