In Fällen, in denen eine Schnittstelle nicht Java-kompatibel ist (weil sie beispielsweise Unions verwendet), kann es dennoch wünschenswert sein, die Konstanten (Enum-Werte) in die Java-Welt zu exportieren. Dieses Szenario wird von hidl-gen -Ljava-constants …
unterstützt, das kommentierte Enum-Deklarationen aus der/den Schnittstellendatei(en) in einem Paket extrahiert und eine Java-Bibliothek mit dem Namen [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Kommentieren Sie jede zu exportierende Enum-Deklaration wie folgt:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Gegebenenfalls kann der Name, unter dem dieser Typ in die Java-Welt exportiert wird, von dem in der Interface-Deklaration gewählten abweichen, indem der Annotations-Parameter name
hinzugefügt wird:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Wenn Java-Konventionen oder persönliche Vorlieben verlangen, dass den Werten des Enum-Typs ein gemeinsames Präfix hinzugefügt wird, verwenden Sie den Annotationsparameter 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, };
Die resultierende Java-Klasse sieht wie folgt aus:
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; }; };
Schließlich werden die Java-Typdeklarationen für Enum-Typen, die in types.hal
deklariert sind, innerhalb einer Klasse Constants
im angegebenen Paket gruppiert. Enum-Typen, die als Kinder einer Schnittstelle deklariert sind, werden unter der Java-Klassendeklaration dieser Schnittstelle gruppiert.