Exportkonstanten

Auch wenn eine Schnittstelle nicht Java-kompatibel ist (z. B. weil sie Unions verwendet), kann es sinnvoll sein, die Konstanten (Enum-Werte) in die Java-Welt zu exportieren. Dieses Szenario wird von hidl-gen -Ljava-constants … unterstützt, das aus den Schnittstellendateien in einem Paket annotierte Enumerationsdeklarationen extrahiert und eine Java-Bibliothek mit dem Namen [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants erstellt. Anmerkungen zu jeder zu exportierenden Enum-Deklaration:

@export
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Falls erforderlich, kann der Name, unter dem dieser Typ in die Java-Welt exportiert wird, von dem in der Schnittstellendeklaration gewählten Namen abweichen. Dazu fügen Sie den Annotation-Parameter name hinzu:

@export(name="JavaFoo")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Wenn gemäß Java-Konventionen oder persönlichen Vorlieben den Werten des Enum-Typs ein gemeinsames Präfix hinzugefügt werden soll, verwenden Sie den Anmerkungsparameter 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;
  };
};

Schließlich werden die Java-Typdeklarationen für in types.hal deklarierte Aufzählungstypen in einer Klasse Constants im jeweiligen Paket gruppiert. Enum-Typen, die als untergeordnet zu einer Schnittstelle deklariert sind, werden in der Java-Klassendeklaration dieser Schnittstelle gruppiert.