Konstanten exportieren

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.