getField()

Die Systemfunktion 'javaLib.getField()' gibt den Wert eines angegebenen Felds in einem angegebenen Java™-Objekt oder in einer angegebenen Java-Klasse im EGL-Java-Objektbereich zurück.

Weitere Informationen zum EGL-Java-Objektbereich, in dem 'javaLib.getField()' und ähnliche Funktionen ausgeführt werden, finden Sie im Abschnitt Java-Zugriffsfunktionen. EGL verwaltet diese Methode für Java-Zugriff zwecks Kompatibilität mit früheren Versionen. Verwenden Sie für neuen Code die leistungsfähigere ExternalType-Syntax. Weitere Informationen finden Sie im Abschnitt ExternalType-Abschnitt.

Syntax

  javaLib.getField(
    Kennung_oder_Klasse javeObjIdOrClass in,
    Feld STRING in)
  returns (Ergebnis anyJavaPrimitive)
Kennung_oder_Klasse
Jede der folgenden Entitäten kann hier als Argument verwendet werden:
  • Eine Java-Objekt-ID (objID) zum Abrufen des Werts eines Objektfelds.
  • Eine von der Groß-/Kleinschreibung abhängige Zeichenfolge, die einen Klassennamen darstellt, um den Wert eines Klassenfelds abzurufen. Einzel- und Doppelbyteleerzeichen werden am Anfang und Ende der Zeichenfolge abgeschnitten.
Feld
Der von der Groß-/Kleinschreibung abhängige Name des zu lesenden Felds. Bei der Eingabe kann es sich um eine beliebige Variable oder einen beliebigen Ausdruck handeln, die/der mit dem Typ STRING zuordnungskompatibel ist. Einzel- und Doppelbyteleerzeichen werden am Anfang und Ende der Zeichenfolge abgeschnitten.
Ergebnis
Das Ergebnis ist der Wert des Felds, das im zweiten Argument angegeben ist. Es gilt Folgendes:
  • Wenn es sich bei dem empfangenen Wert um den Typ 'BigDecimal', 'BigInteger', 'byte', 'short', 'int', 'long', 'float' oder 'double' handelt, muss die Ergebnisvariable eine Variable eines numerischen Datentyps sein. Die Merkmale der Variablen brauchen nicht dem Wert zu entsprechen. So kann beispielsweise ein Wert des Typs 'float' in einer Rückkehrvariablen gespeichert werden, die ohne Dezimalstellen deklariert ist. Details zur Handhabung von Überläufen finden Sie im Thema 'sysVar' in overflowIndicator.
  • Wenn der empfangene Wert ein boolescher Wert ist, muss die Ergebnisvariable eine Variable des Typs BOOLEAN eines numerischen Basiselementtyps sein. Bei numerischen Variablen steht der Wert 1 für 'true' (wahr) und der Wert 0 für 'false' (falsch).
  • Wenn der empfangene Wert eine Bytefeldgruppe ist, muss die Ergebnisvariable vom Typ HEX sein. Details zu abweichenden Längen finden Sie im Thema 'Zuordnungen'.
  • Wenn der empfangene Wert den Typ 'String' oder 'Char' aufweist, muss das Ergebnisfeld ein Feld vom Typ CHAR, DBCHAR, MBCHAR, STRING oder UNICODE sein:
    • Wenn das Ergebnisfeld vom Typ MBCHAR, STRING oder UNICODE ist, ist der empfangene Wert immer angemessen.
    • Ist das Ergebnisfeld vom Typ CHAR, können Probleme auftreten, wenn der empfangene Wert Zeichen enthält, die DBCHAR-Zeichen entsprechen.
    • Ist das Ergebnisfeld vom Typ DBCHAR, können Probleme auftreten, wenn der empfangene Wert Unicode-Zeichen enthält, die Einzelbytezeichen entsprechen.

    Weitere Informationen zu Längenabweichungen finden Sie im Abschnitt Zuordnungen.

Beispiel

Das folgende Beispiel zeigt die Funktion 'getField()', wobei myID als 'objID' umgesetzt wird:

  myVar = javaLib.getField("myID" as "objID:java", "myField");

Hinweise zu Fehlern

Ist die Programmeigenschaft 'v60ExceptionCompatibility' nicht oder auf NO gesetzt, führt eine Ausnahmebedingung dazu, dass EGL eine Ausnahmebedingung vom Typ 'JavaObjectException' auslöst. Andere Fehler führen dazu, dass EGL eine Ausnahmebedingung vom Typ 'RuntimeException' auslöst.

Ist die Programmeigenschaft 'v60ExceptionCompatibility' auf YES gesetzt, kann ein Fehler während der Verarbeitung von 'javaLib.getField()' dazu führen, dass 'sysVar.errorCode' auf einen in der nächsten Tabelle aufgeführten Wert gesetzt wird.

Tabelle 1. Fehlercodes für 'getField()'
Wert in 'sysVar.errorCode' Beschreibung
00001000 Es wurde eine Ausnahmebedingung durch eine aufgerufene Methode oder infolge einer Klasseninitialisierung ausgelöst.
00001001 Das Objekt weist einen Nullwert auf, oder die angegebene Kennung ist nicht im Objektbereich vorhanden.
00001002 Eine öffentliche Methode, ein öffentliches Feld oder eine öffentliche Klasse mit dem angegebenen Namen ist nicht vorhanden oder kann nicht geladen werden.
00001004 Die Methode hat einen Nullwert oder keinen Wert zurückgegeben, oder der Wert eines Feldes war null.
00001005 Der zurückgegebene Wert entspricht nicht dem Typ der Variablen, der er zugeordnet wurde.
00001007 Bei dem Versuch, Informationen zu einer Methode oder einem Feld abzurufen, wurde eine Ausnahmebedingung vom Typ 'SecurityException' oder 'IllegalAccessException' ausgelöst. Oder es wurde versucht, den Wert eines als 'final' deklarierten Feldes zu setzen.
00001009 Anstelle eines Klassennamens muss eine Kennung angegeben werden. Die Methode oder das Feld ist nicht statisch.

Feedback