En los casos en que una interfaz no sea compatible con Java (porque usa uniones, por ejemplo), aún puede ser deseable exportar las constantes (valores de enumeración) al mundo de Java. Este escenario es compatible con hidl-gen -Ljava-constants …
que extrae las declaraciones de enumeración anotadas de los archivos de interfaz en un paquete y produce una biblioteca java llamada [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
. Anote cada declaración de enumeración que se exportará de la siguiente manera:
@export enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Si es necesario, el nombre con el que se exporta este tipo al mundo Java puede ser diferente del elegido en la declaración de la interfaz agregando el name
del parámetro de anotación:
@export(name="JavaFoo") enum Foo : int32_t { SOME_VALUE, SOME_OTHER_VALUE, };
Si las convenciones de Java o las preferencias personales solicitan que se agregue un prefijo común a los valores del tipo de enumeración, use 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; }; };
Finalmente, la declaración de tipo Java para los tipos de enumeración declarados en types.hal
se agrupan dentro de una clase Constants
en el paquete dado. Los tipos de enumeración declarados como elementos secundarios de una interfaz se agruparán en la declaración de clase Java de esa interfaz.