Exportation de constantes

Dans les cas où une interface n'est pas compatible Java (parce qu'elle utilise des unions par exemple) il peut toujours être souhaitable d'exporter les constantes (valeurs enum) vers le monde Java. Ce scénario est pris en charge par hidl-gen -Ljava-constants … qui extrait les déclarations enum annotées du ou des fichiers d'interface dans un package et produit une bibliothèque Java nommée [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . Annotez chaque déclaration enum à exporter comme suit :

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

Le cas échéant, le nom sous lequel ce type est exporté vers le monde Java peut être différent de celui choisi dans la déclaration de l'interface en ajoutant le name du paramètre d'annotation :

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

Si les conventions Java ou les préférences personnelles demandent qu'un préfixe commun soit ajouté aux valeurs du type enum, 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 résultante apparaît 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 enum déclarés dans types.hal est regroupée dans une classe Constants dans le package donné. Les types Enum déclarés comme enfants d'une interface seront regroupés sous la déclaration de classe Java de cette interface.