Exportando 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 enum) para o mundo Java. Este cenário é suportado por hidl-gen -Ljava-constants … que extrai declarações enum anotadas do(s) arquivo(s) de interface em um pacote e produz uma biblioteca Java chamada [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . Anote cada 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 daquele 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 Java ou preferências pessoais solicitarem que um prefixo comum seja adicionado aos valores do tipo enum, 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;
  };
};

Finalmente, a declaração de tipo Java para tipos enum declarados em types.hal são agrupados dentro de uma classe Constants no pacote fornecido. Os tipos de enumeração declarados como filhos de uma interface serão agrupados na declaração de classe Java dessa interface.