Exportar constantes

Nos casos em que uma interface não é compatível com Java (porque usa uniões, por exemplo), ainda pode ser desejável exportar as constantes (valores de enumeração) para o mundo Java. Esse cenário é aceito por hidl-gen -Ljava-constants …, que extrai declarações de enumeração anotadas dos arquivos de interface em um pacote e produz uma biblioteca Java chamada [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Anote cada declaração de tipo enumerado a ser exportada da seguinte maneira:

@export
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Se necessário, o nome em que esse tipo é exportado para o mundo Java pode ser diferente do escolhido na declaração de interface, adicionando o parâmetro de anotação name:

@export(name="JavaFoo")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Se as convenções do Java ou preferências pessoais exigirem que um prefixo comum seja adicionado aos valores do tipo de enumeração, use o parâmetro de anotação 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,
};

A classe Java resultante aparece da seguinte maneira:

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 fim, a declaração de tipo Java para tipos de enumeração declarados em types.hal é agrupada em uma classe Constants no pacote especificado. Os tipos de enumeração declarados como filhos de uma interface são agrupados na declaração de classe Java dessa interface.