匯出常數

如果介面不相容於 Java (例如使用了聯集),仍建議將常數 (列舉值) 匯出至 Java 世界。hidl-gen -Ljava-constants … 支援此情境,可從套件中的介面檔案擷取已註解的列舉宣告,並產生名為 [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants 的 Java 程式庫。請為要匯出的每個列舉宣告加上註解,如下所示:

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

如有需要,您可以新增註解參數 name,讓此類型在匯出至 Java 世界時使用的名稱與介面宣告中選擇的名稱不同:

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

如果 Java 慣例或個人偏好設定要求將常見前置字元新增至列舉型別的值,請使用註解參數 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,
};

產生的 Java 類別如下所示:

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

最後,針對 types.hal 中宣告的列舉類型,Java 類型宣告會在指定套件中的 Constants 類別中分組。宣告為介面子項的列舉類型會在該介面的 Java 類別宣告下方分組。