storeNew()
Die Systemfunktion 'javaLib.storeNew()' ruft den Konstruktor einer Klasse auf und stellt das neue Objekt in den EGL-Java™-Objektbereich.
- Ausführen von 'javaLib.remove()', um das Objekt zu entfernen, das der Kennung zuvor zugeordnet war.
- Zuordnen des neuen Objekts zur Kennung.
Weitere Informationen zum EGL-Java-Objektbereich, in dem 'javaLib.storeNew()' 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.storeNew(
Speicher-ID javaObjId in,
Klasse STRING in
{, Argument anyEglPrimitive in})
- Speicher-ID
- Ein von der Groß-/Kleinschreibung abhängiger Name zur Identifizierung des neuen Objekts. Bei der Eingabe kann es sich um eine beliebige Variable oder einen beliebigen Ausdruck handeln, die/der mit dem Typ STRING zuordnungskompatibel ist und in den Typ 'objID' umgesetzt wird, wie in einem späteren Beispiel gezeigt wird. EGL schneidet Einzel- und Doppelbyteleerzeichen am Anfang und Ende des Argumentwertes ab.
- Klasse
- Der vollständig qualifizierte, von der Groß-/Kleinschreibung abhängige Name einer Java-Klasse. 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 den Konstruktor ü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 Konstruktorparameter 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.
Bei Verwendung eines der anderen EGL-Typen kann es zu einem Rundungsfehler kommen.Ein Wert eines externen EGL-Typs ist gültig, wie nachfolgend gezeigt:
SharedResourcePowerServer srps = JavaLib.getSharedResourcePowerServer(); JavaLib.storeNew("storeId" as "objID:java", "myClass", srps);
Beispiel
Im folgenden Beispiel stellt die Funktion ein neu erstelltes Objekt in den Objektbereich.
javaLib.storeNew("storeId" as "objID:java", "myClass", 36 );
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 lösen eine Ausnahmebedingung vom Typ 'RuntimeException' aus.
Ist die Programmeigenschaft 'v60ExceptionCompatibility' auf YES gesetzt, kann ein Fehler während der Verarbeitung von 'javaLib.storeNew()' dazu führen, dass 'sysVar.errorCode' auf einen in der nächsten Tabelle aufgeführten Wert gesetzt wird.
| 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. |
| 00001008 | Der Konstruktor kann nicht aufgerufen werden. Der Klassenname verweist auf eine Schnittstellenklasse oder abstrakte Klasse. |