Nei casi in cui un'interfaccia non sia compatibile con Java (ad esempio perché utilizza unioni), potrebbe comunque essere opportuno esportare le costanti (valori enumerati) nel mondo Java. Questo scenario è supportato da hidl-gen -Ljava-constants
…
, che estrae le dichiarazioni enum annotate dai file di interfaccia in un pacchetto e produce una libreria Java denominata [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Aggiungi un'annotazione a ogni dichiarazione di enum da esportare come segue:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Se necessario, il nome con cui questo tipo viene esportato nel mondo Java può essere diverso da quello scelto nella dichiarazione dell'interfaccia aggiungendo il parametro di annotazione name
:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Se le convenzioni Java o le preferenze personali richiedono l'aggiunta di un prefisso comune ai valori del tipo enum, utilizza il parametro annotation-parametervalue_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 risultante è la seguente:
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; }; };
Infine, la dichiarazione del tipo Java per i tipi di enum dichiarati in
types.hal
sono raggruppati all'interno di una classe Constants
nel
pacchetto specificato. I tipi di enum dichiarati come elementi secondari di un'interfaccia sono raggruppati
nella dichiarazione della classe Java dell'interfaccia.