Sabitleri Dışa Aktarma

Bir arabirimin Java ile uyumlu olmadığı durumlarda (örneğin sendikaları kullandığı için), sabitleri (enum değerleri) Java dünyasına aktarmak yine de istenebilir. Bu senaryo, bir paketteki arayüz dosyalarından açıklamalı numaralandırma bildirimlerini çıkaran ve [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants adlı bir Java kitaplığı üreten hidl-gen -Ljava-constants … tarafından desteklenir. . Dışa aktarılacak her numaralandırma bildirimine aşağıdaki gibi açıklama ekleyin:

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

Gerekirse, bu türün Java dünyasına aktarıldığı ad, ek açıklama-parametre name eklenerek arabirim bildiriminde seçilenden farklı olabilir:

@export(name="JavaFoo")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Java kuralları veya kişisel tercih, enum türünün değerlerine ortak bir önek eklenmesini isterse, value_prefix ek açıklama parametresini kullanın:

// File "types.hal".

package android.hardware.bar@1.0;

@export(name="JavaFoo", value_prefix="JAVA_")
enum Foo : int32_t {
  SOME_VALUE,
  SOME_OTHER_VALUE,
};

Ortaya çıkan Java sınıfı aşağıdaki gibi görünür:

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

Son olarak, types.hal içinde bildirilen enum türleri için Java türü bildirimi, verilen pakette bir sınıf Constants içinde gruplandırılmıştır. Bir arabirimin çocukları olarak bildirilen enum türleri, o arabirimin Java sınıf bildirimi altında gruplandırılacaktır.