Exporter des constantes

Lorsqu'une interface n'est pas compatible avec Java (car elle utilise des unions par exemple), il peut toujours être souhaitable d'exporter les constantes (valeurs d'énumération) vers dans le monde Java. Ce scénario est compatible avec hidl-gen -Ljava-constants …, qui extrait les déclarations d'énumération annotées de l'interface. fichier(s) d'un package et génère une bibliothèque Java nommée [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants Annoter chaque élément d'énumération à exporter comme suit:

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

Si nécessaire, le nom sous lequel ce type est exporté vers l'environnement Java peut être différente de celle choisie dans la déclaration de l'interface en ajoutant le paramètre d'annotation name:

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

Si les conventions Java ou les préférences personnelles exigent qu'un préfixe commun soit ajouté aux valeurs du type d'énumération, utilisez le paramètre d'annotation 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,
};

La classe Java obtenue se présente comme suit:

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;
  };
};

Enfin, la déclaration de type Java pour les types d'énumération déclarés dans Les types.hal sont regroupés dans une classe Constants dans le un package donné. Les types d'énumération déclarés comme enfants d'une interface sont regroupés sous la déclaration de classe Java de cette interface.