Costanti di esportazione

Nei casi in cui un'interfaccia non sia compatibile con Java (ad esempio perché utilizza unioni), potrebbe comunque essere opportuno esportare le costanti (valori enumerati) 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. Aggiungi un'annotazione a ogni dichiarazione di 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 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 l'aggiunta di un prefisso comune ai valori del tipo enum, utilizza il parametro annotation-parametervalue_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 è la seguente:

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 di enum dichiarati in types.hal sono raggruppati all'interno di una classe Constants nel pacchetto specificato. I tipi di enum dichiarati come elementi secondari di un'interfaccia sono raggruppati nella dichiarazione della classe Java dell'interfaccia.