Nei casi in cui un'interfaccia non sia compatibile con Java (perché utilizza unioni
ad esempio) potrebbe essere comunque auspicabile esportare le costanti (valori enum) in
nel mondo Java. Questo scenario è supportato da hidl-gen -Ljava-constants
…
, che estrae le dichiarazioni enum annotate dall'interfaccia
i file in un pacchetto e produce una libreria Java denominata
[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Annota ogni
dichiarazione 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
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 un prefisso comune
aggiunto ai valori del tipo di enum, utilizza il parametro annotazioni
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 risultante appare come segue:
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 enum dichiarati
types.hal
sono raggruppati all'interno di una classe Constants
nel
un dato pacchetto. I tipi di enum dichiarati come elementi secondari di un'interfaccia vengono raggruppati
nella dichiarazione della classe Java dell'interfaccia.