Sabitleri dışa aktarma

Bir arayüzün Java ile uyumlu olmadığı durumlarda (örneğin, birleştirme kullandığı için) sabitleri (enum değerleri) Java dünyasına aktarmak yine de istenebilir. Bu senaryo, bir paketteki arayüz dosyalarından ek açıklamalı enum tanımları ayıklayan ve [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants adlı bir Java kitaplığı oluşturan hidl-gen -Ljava-constants … tarafından desteklenir. Dışa aktarılacak her enum beyanını aşağıdaki şekilde ek açıklamayla belirtin:

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

Gerekirse, bu türün Java dünyasına aktarıldığı ad, name ek açıklama parametresi eklenerek arayüz beyanında seçilen addan farklı olabilir:

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

Java kuralları veya kişisel tercihler, enum türündeki değerlere ortak bir ön ek eklenmesini gerektiriyorsa ek açıklama parametresini kullanınvalue_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,
};

Sonuçta oluşturulan 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 tanımlanan enum türleri için Java türü beyanı, belirli paketteki bir Constants sınıfı içinde gruplandırılır. Bir arayüzün alt öğesi olarak tanımlanan enum türleri, söz konusu arayüzün Java sınıfı beyanı altında gruplandırılır.