Esporta costanti

Nei casi in cui un'interfaccia non sia compatibile con Java (perché utilizza unioni ad esempio) potrebbe essere comunque auspicabile esportare le costanti (valori enum) in nel mondo Java. Questo scenario è supportato da hidl-gen -Ljava-constants …, che estrae le dichiarazioni enum annotate dall'interfaccia i file in un pacchetto e produce una libreria Java denominata [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants. Annota 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 parametro di annotazione name:

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

Se le convenzioni Java o le preferenze personali richiedono un prefisso comune aggiunto ai valori del tipo di enum, utilizza il parametro annotazioni 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, la dichiarazione del tipo Java per i tipi enum dichiarati types.hal sono raggruppati all'interno di una classe Constants nel un dato pacchetto. I tipi di enum dichiarati come elementi secondari di un'interfaccia vengono raggruppati nella dichiarazione della classe Java dell'interfaccia.