인터페이스가 Java와 호환되지 않는 경우(예를 들어 유니언을 사용하기 때문에) 상수(enum 값)를 Java 환경으로 내보내는 것이 좋습니다. 이 시나리오는 패키지의 인터페이스 파일에서 주석이 달린 enum 선언을 추출하고 [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
라는 Java 라이브러리를 생성하는 hidl-gen -Ljava-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 규칙 또는 개인적인 선호도에 따라 일반적인 접두사를 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; }; };
마지막으로 types.hal
에 선언된 enum 유형의 Java 유형 선언은 지정된 패키지의 Constants
클래스 내부에 그룹화됩니다. 인터페이스의 하위 클래스로 선언된 enum 유형은 해당 인터페이스의 Java 클래스 선언으로 그룹화됩니다.