Экспорт констант

В тех случаях, когда интерфейс несовместим с Java (например, из-за того, что он использует объединения), все же может быть желательно экспортировать константы (значения перечисления) в мир Java. Этот сценарий поддерживается hidl-gen -Ljava-constants … , который извлекает аннотированные объявления enum из файлов интерфейса в пакете и создает библиотеку java с именем [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants . Аннотируйте каждое объявление enum для экспорта следующим образом:

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

При необходимости имя, под которым этот тип экспортируется в мир Java, может отличаться от выбранного в объявлении интерфейса добавлением name параметра-аннотации:

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

Наконец, объявление типа Java для типов enum, объявленных в types.hal , сгруппировано внутри Constants класса в данном пакете. Типы Enum, объявленные как дочерние элементы интерфейса, будут сгруппированы в соответствии с объявлением класса Java этого интерфейса.