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.