ExternalType-Abschnitte ordnen externe Sprachelemente zu EGL zu.
Diese Zuordnung ist der Zuordnung ähnlich, die eine Schnittstelle für Servicefunktionen bietet. Die Zuordnung zwischen EGL und externen Sprachenelementen ist jedoch generalisiert, um Felder und Konstruktoren einzuschließen. Das einzige externe Element, das vom ExternalType-Abschnitt unterstützt wird, ist das Java™-Objekt.
Das Konzept des ExternalType-Abschnitts ist mit dem Konzept einer Bibliothek oder eines Service vergleichbar. In allen diesen Fällen wird im Programm externe Funktionalität verwendet. Im Fall eines Service oder eines ExternalType-Abschnitts, bei dem EGL keinen direkten Zugriff auf den Code besitzt, müssen Sie bestimmte Prototypen bereitstellen, damit EGL die erforderliche Typüberprüfung ausführen kann.
Eine ExternalType-Definition reserviert keinen Speicher. Sie müssen eine Variable deklarieren, die auf dem Abschnitt basiert (optional unter Verwendung der EGL-Anweisung new), damit ihre Variablen und Funktionen verwendet werden können (sofern diese nicht als static deklariert sind; siehe 'Syntax' im vorliegenden Abschnitt).
Eine Reihe der Konzepte, die im Zusammenhang mit dem ExternalType-Abschnitt zur Anwendung kommen, stammt aus objektorientierten Sprachen wie Java und C#. Diese Konzepte beinhalten Erweiterung, Vererbung und Konstruktoren. Falls Ihnen diese Begriffe nicht geläufig sind, informieren Sie sich mithilfe einer Java-Basisreferenz.
Eine der Hauptverwendungen für einen ExternalType-Abschnitt ist die Erstellung von Feldgruppen aus Funktionszeigern für die Ereignisverarbeitung. EGL-Textberichte verwenden ExternalType-Abschnitte auf diese Weise (siehe EGL-Textberichte).
Falls die Funktion mit static gekennzeichnet ist, rufen Sie sie unter Verwendung einer Syntax auf, die aus dem Namen des ExternalType-Abschnitts und einem Punkt besteht (typname.methodenname()). Andernfalls erstellen Sie eine Variable, die auf dem ExternalType-Abschnitt basiert, und hängen Sie den Variablennamen mit einer Punktsyntax an den Namen der Methode an (externaltype-variable.methodenname()). Weitere Informationen hierzu finden Sie im Beispiel.
ExternalType CustomDate extends Serializable type JavaObject
{
packageName="com.mycompany",
javaName="CustomDate"
}
// functions
end
Serialisierbare ExternalType-Variablen können direkt auf Platte gespeichert und später wiederhergestellt werden, falls die zugehörige Java-Klasse die Schnittstelle 'java.io.Serializable' implementiert. ExternalType-Abschnitte, die den serialisierbaren ExternalType-Abschnitt nicht erweitern, gelten als transient und können nicht direkt auf Platte gespeichert werden. Falls Sie die Informationen in einem nicht serialisierbaren ExternalType-Abschnitt speichern wollen, müssen Sie zu diesem Zweck eine Datenquelle verwenden.
ExternalType Serializable type JavaObject
{
JavaName = "Serializable",
PackageName = "java.io"
}
end