Cómo exportar constantes

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.