Esportazione di costanti

Nei casi in cui un'interfaccia non è compatibile con Java (perché, ad esempio, utilizza le unioni) potrebbe essere comunque desiderabile esportare le costanti (valori enum) nel mondo Java. Questo scenario è supportato da hidl-gen -Ljava-constants … che estrae le dichiarazioni enum annotate dai file di interfaccia in un pacchetto e produce una libreria java denominata [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . Annotare ogni dichiarazione enum da esportare come segue:

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

Se necessario, il nome con cui questo tipo viene esportato nel mondo Java può essere diverso da quello scelto nella dichiarazione dell'interfaccia aggiungendo il name del parametro di annotazione:

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

Se le convenzioni Java o le preferenze personali richiedono l'aggiunta di un prefisso comune ai valori del tipo enum, utilizzare l'annotation-parameter 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,
};

La classe Java risultante appare come segue:

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;
  };
};

Infine, le dichiarazioni di tipo Java per i tipi enum dichiarati in types.hal sono raggruppate all'interno di una classe Constants nel pacchetto specificato. I tipi enum dichiarati come figli di un'interfaccia verranno raggruppati nella dichiarazione di classe Java di tale interfaccia.