En los casos en que una interfaz no sea compatible con Java (porque usa uniones
por ejemplo), podrías seguir exportando las constantes (valores enum) a
el mundo de Java. Esta situación es compatible con hidl-gen -Ljava-constants
…
, que extrae declaraciones enum anotadas de la interfaz.
archivos en un paquete y produce una biblioteca de Java llamada
[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
Anotar cada una
enum se exportará de la siguiente manera:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Si es necesario, el nombre bajo el cual este tipo se exporta al mundo de Java.
puede ser diferente de la elegida en la declaración de interfaz. Para ello, agrega
parámetro de anotación name
:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Si las convenciones de Java o las preferencias personales solicitan que se use un prefijo común
a los valores del tipo enum, usa el parámetro de anotación
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 clase Java resultante aparece de la siguiente manera:
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; }; };
Por último, la declaración de tipo de Java para los tipos de enumeración declarados en
Las types.hal
se agrupan dentro de una clase Constants
en el
paquete determinado. Se agrupan los tipos de enumeraciones declarados como secundarios de una interfaz
en la declaración de clase Java de esa interfaz.