Dans les cas où une interface n'est pas compatible avec Java (par exemple, parce qu'elle utilise des unions), il peut être souhaitable d'exporter les constantes (valeurs d'énumération) vers le monde Java. Ce scénario est compatible avec hidl-gen -Ljava-constants
…
, qui extrait les déclarations d'énumération annotées des fichiers d'interface d'un package et produit une bibliothèque Java nommée [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Annotez chaque déclaration 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 le monde Java peut être différent de celui choisi dans la déclaration d'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 vos préférences personnelles exigent 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 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 types.hal
est regroupée dans une classe Constants
du package donné. Les types d'énumération déclarés comme enfants d'une interface sont regroupés sous la déclaration de la classe Java de cette interface.