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.