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 de 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.