store()

Die Systemfunktion 'javaLib.store()' ruft eine Methode auf, stellt das zurückgegebene Objekt (oder einen Nullwert) in den EGL-Java™-Objektbereich und ordnet dieses Objekt einer angegebenen Kennung zu.

Ist die Kennung bereits im Objektbereich vorhanden, ist die Aktion äquivalent zu den folgenden Schritten:

Wenn die Methode ein Java-Basiselement anstelle eines Objekts zurückgibt, speichert EGL ein Objekt, das dieses Basiselement darstellt. Gibt die Methode beispielsweise ein Element vom Typ 'int' zurück, speichert EGL ein Objekt des Typs 'java.lang.Integer'.

Weitere Informationen zum EGL-Java-Objektbereich, in dem 'javaLib.store()' und ähnliche Funktionen ausgeführt werden, finden Sie im Abschnitt zu den 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 in 'ExternalType (Abschnitt)'.

Syntax

  javaLib.store(
    Speicher-ID javaObjId in,
    Kennung_oder_Klasse javaObjId in,
    Methode STRING in
    {, Argument anyEGLPrimitive in} )
Speicher-ID
Ein von der Groß-/Kleinschreibung abhängiger Name zur Identifizierung des zurückgegebenen Objekts. Bei der Eingabe kann es sich um eine Variable oder einen Ausdruck handeln, die/der mit dem Typ STRING zuordnungskompatibel ist und in 'objID' umgesetzt wird. EGL schneidet Einzel- und Doppelbyteleerzeichen am Anfang und Ende des Argumentwertes ab.
Kennung_oder_Klasse
Die Klasse oder das Objekt, deren/dessen Methode aufgerufen wird. Hierbei handelt es sich um eine der folgenden Entitäten:
  • Eine Java-Objekt-ID (objID) zum Aufrufen einer Methode eines lokalen Java-Objekts.
  • Eine Zeichenfolge, die einen Klassennamen darstellt, um eine Methode einer Java-Klasse aufzurufen. EGL schneidet Einzel- und Doppelbyteleerzeichen am Anfang und Ende des Argumentwertes ab. Bei der Angabe des Wertes muss die Groß-/Kleinschreibung beachtet werden.
Methode
Der von der Groß-/Kleinschreibung abhängige Name der aufzurufenden Methode, ohne runde Klammern. Bei der Eingabe kann es sich um eine beliebige Variable oder einen beliebigen Ausdruck handeln, die/der mit dem Typ STRING zuordnungskompatibel ist. EGL schneidet Einzel- und Doppelbyteleerzeichen am Anfang und Ende des Argumentwertes ab.
Argument
Ein an die Methode übergebener Wert. Möglicherweise ist eine Umsetzung erforderlich; Informationen hierzu enthält das Thema 'EGL-Basiselemente zu Java zuordnen.' Es gelten die Regeln für die Java-Typenkonvertierung. Wenn Sie beispielsweise an einen als 'int' deklarierten Methodenparameter einen Wert vom Typ SMALLINT übergeben, tritt kein Fehler auf. Um einen Verlust an Genauigkeit zu vermeiden, sollte eine EGL-Variable FLOAT für einen Java-Datentyp 'double' und eine EGL-Variable SMALLFLOAT für einen Java-Datentyp 'float' verwendet werden. Wenn Sie einen der anderen EGL-Typen verwenden, kann es unter Umständen zu einem Rundungsfehler kommen.
Ein Wert eines externen EGL-Typs ist gültig, wie nachfolgend gezeigt:
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer();
JavaLib.store("storeId" as "objID:java", "myId" as "objID:java",
              "myMethod", srps);

Beispiel

Im folgenden Beispiel wird myMethod aufgerufen, und die Ergebnisse werden zu storeID zugeordnet.

  javaLib.store("storeId" as "objID:java", "myId" as "objID:java",
      "myMethod", myVar as "java:smallfloat");

Hinweise zu Fehlern

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

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

Tabelle 1. Fehlercodes für 'javaLib.store()'
Wert in 'sysVar.errorCode' Beschreibung
00001000 Es wurde eine Ausnahmebedingung durch eine aufgerufene Methode oder infolge einer Klasseninitialisierung ausgelöst.
00001001 Das Objekt ist leer (null), 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.
00001003 Der EGL-Basiselementtyp stimmt nicht mit dem in Java erwarteten Typ überein.
00001006 Die Klasse einer Argumentumsetzung in null konnte nicht geladen werden.
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