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.