Ab dem 27. März 2025 empfehlen wir, android-latest-release
anstelle von aosp-main
zu verwenden, um AOSP zu erstellen und Beiträge dazu zu leisten. Weitere Informationen finden Sie unter Änderungen am AOSP.
Exportkonstanten
Mit Sammlungen den Überblick behalten
Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.
Auch wenn eine Schnittstelle nicht Java-kompatibel ist (z. B. weil sie Unions verwendet), kann es sinnvoll sein, die Konstanten (Enum-Werte) in die Java-Welt zu exportieren. Dieses Szenario wird von hidl-gen -Ljava-constants
…
unterstützt, das aus den Schnittstellendateien in einem Paket annotierte Enumerationsdeklarationen extrahiert und eine Java-Bibliothek mit dem Namen [PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants
erstellt. Anmerkungen zu jeder zu exportierenden Enum-Deklaration:
@export
enum Foo : int32_t {
SOME_VALUE,
SOME_OTHER_VALUE,
};
Falls erforderlich, kann der Name, unter dem dieser Typ in die Java-Welt exportiert wird, von dem in der Schnittstellendeklaration gewählten Namen abweichen. Dazu fügen Sie den Annotation-Parameter name
hinzu:
@export(name="JavaFoo")
enum Foo : int32_t {
SOME_VALUE,
SOME_OTHER_VALUE,
};
Wenn gemäß Java-Konventionen oder persönlichen Vorlieben den Werten des Enum-Typs ein gemeinsames Präfix hinzugefügt werden soll, verwenden Sie den Anmerkungsparameter 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,
};
Die resultierende Java-Klasse sieht so aus:
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;
};
};
Schließlich werden die Java-Typdeklarationen für in types.hal
deklarierte Aufzählungstypen in einer Klasse Constants
im jeweiligen Paket gruppiert. Enum-Typen, die als untergeordnet zu einer Schnittstelle deklariert sind, werden in der Java-Klassendeklaration dieser Schnittstelle gruppiert.
Alle Inhalte und Codebeispiele auf dieser Seite unterliegen den Lizenzen wie im Abschnitt Inhaltslizenz beschrieben. Java und OpenJDK sind Marken oder eingetragene Marken von Oracle und/oder seinen Tochtergesellschaften.
Zuletzt aktualisiert: 2025-07-27 (UTC).
[[["Leicht verständlich","easyToUnderstand","thumb-up"],["Mein Problem wurde gelöst","solvedMyProblem","thumb-up"],["Sonstiges","otherUp","thumb-up"]],[["Benötigte Informationen nicht gefunden","missingTheInformationINeed","thumb-down"],["Zu umständlich/zu viele Schritte","tooComplicatedTooManySteps","thumb-down"],["Nicht mehr aktuell","outOfDate","thumb-down"],["Problem mit der Übersetzung","translationIssue","thumb-down"],["Problem mit Beispielen/Code","samplesCodeIssue","thumb-down"],["Sonstiges","otherDown","thumb-down"]],["Zuletzt aktualisiert: 2025-07-27 (UTC)."],[],[],null,["# Export constants\n\nIn cases where an interface isn't Java-compatible (because it uses unions\nfor example) it might still be desirable to export the constants (enum values) to\nthe Java world. This scenario is supported by `hidl-gen -Ljava-constants\n...` which extracts annotated enum declarations from the interface\nfile(s) in a package and produces a java library named\n`[PACKAGE-NAME]-V[PACKAGE-VERSION]-java-constants`. Annotate each\nenum declaration to be exported as follows: \n\n```java\n@export\nenum Foo : int32_t {\n SOME_VALUE,\n SOME_OTHER_VALUE,\n};\n```\n\nIf necessary, the name under which this type is exported to the Java world\ncan be different from that chosen in the interface declaration by adding the\nannotation-parameter `name`: \n\n```java\n@export(name=\"JavaFoo\")\nenum Foo : int32_t {\n SOME_VALUE,\n SOME_OTHER_VALUE,\n};\n```\n\nIf Java conventions or personal preference ask for a common prefix to be\nadded to the enum type's values, use the annotation-parameter\n`value_prefix`: \n\n```java\n// File \"types.hal\".\n\npackage android.hardware.bar@1.0;\n\n@export(name=\"JavaFoo\", value_prefix=\"JAVA_\")\nenum Foo : int32_t {\n SOME_VALUE,\n SOME_OTHER_VALUE,\n};\n```\n\nThe resulting Java class appears as follows: \n\n```java\npackage android.hardware.bar.V1_0;\n\npublic class Constants {\n public final class JavaFoo {\n public static final int JAVA_SOME_VALUE = 0;\n public static final int JAVA_SOME_OTHER_VALUE = 1;\n };\n};\n```\n\nFinally, Java type declaration for enum types declared in\n`types.hal` are grouped inside a class `Constants` in the\ngiven package. Enum types declared as children of an interface are grouped\nunder that interface's Java class declaration."]]