В случаях, когда интерфейс несовместим с 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 или личные предпочтения требуют добавления общего префикса к значениям типа перечисления, используйте параметр-аннотации 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 этого интерфейса.