Konstanten exportieren

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.