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.