상수 내보내기

인터페이스가 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 클래스 선언으로 그룹화됩니다.