Константы экспорта

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

@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 или вашими предпочтениями к значениям типа enum нужно добавить общий префикс, используйте параметр аннотации 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 для типов перечислений, объявленных в файле types.hal, группируются в классе Constants в указанном пакете. Типы перечислений, объявленные как дочерние элементы интерфейса, группируются под объявлением класса Java этого интерфейса.