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 do Java. Esse cenário tem suporte do hidl-gen -Ljava-constants …, que extrai as declarações de tipo enumerado anotadas da interface arquivo(s) em um pacote e produz uma biblioteca Java chamada [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Faça uma anotação declaração de enumeração a ser exportada da seguinte forma:

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

Se necessário, o nome sob o qual esse tipo é exportado para o mundo Java pode ser diferente do escolhido na declaração da 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 ou preferências pessoais do Java pedirem 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 forma:

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 são agrupadas dentro de uma classe Constants na pacote fornecido. Os tipos de enumeração declarados como filhos de uma interface são agrupados na declaração de classe Java dessa interface.