In Fällen, in denen eine Schnittstelle nicht mit Java kompatibel ist, weil sie Unions
kann es dennoch sinnvoll sein, die Konstanten (Enum-Werte) nach
der Java-Welt. Dieses Szenario wird von hidl-gen -Ljava-constants
…
unterstützt, das annotierte Enum-Deklarationen aus der Schnittstelle extrahiert.
Datei(en) in einem Paket und erzeugt eine Java-Bibliothek namens
[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Jedes mit Anmerkungen versehen
enum-Deklaration wie folgt zu exportieren:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Falls erforderlich, der Name, unter dem dieser Typ in die Java-Welt exportiert wird
kann sich von der in der Interface-Deklaration ausgewählten Methode unterscheiden, indem
Annotationsparameter name
:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Wenn Java-Konventionen oder persönliche Vorlieben ein gemeinsames Präfix verlangen, das
zu den Werten des Enum-Typs hinzugefügt haben, 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 so 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; }; };
Die Java-Typdeklaration für enum-Typen, die in
types.hal
sind in einer Klasse Constants
im
bereitgestellten Pakets. Enum-Typen, die einer Schnittstelle als untergeordnete Elemente deklariert sind, werden gruppiert
unter der Java-Klassendeklaration dieser Schnittstelle.