Exporta constantes

En los casos en que una interfaz no sea compatible con Java (porque usa uniones, por ejemplo), es posible que aún sea conveniente exportar las constantes (valores de enumeración) al mundo de Java. hidl-gen -Ljava-constants … admite esta situación, que extrae declaraciones de enum con anotaciones de los archivos de interfaz de un paquete y produce una biblioteca de Java llamada [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Anota 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 de Java puede ser diferente del que se eligió en la declaración de la interfaz si se agrega el 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 requieren que se agregue 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 types.hal se agrupan dentro de una clase Constants en el paquete determinado. Los tipos de enum declarados como elementos secundarios de una interfaz se agrupan en la declaración de la clase Java de esa interfaz.