Ansicht
Dokumentation
ABENCONSTRUCTOR_EXPRESSION_CAST - CONSTRUCTOR EXPRESSION CAST
ROGBILLS - Synchronize billing plans BAL_S_LOG - Application Log: Log header dataDiese Dokumentation steht unter dem Copyright der SAP AG.
CAST, Casting-Operator
... CAST type( $[let_exp$] dobj ) ...
Wirkung
Ein Konstruktorausdruck mit dem Casting-Operator CAST führt einen Downcast oder einen Upcast für das Argument dobj aus und erzeugt als Resultat eine Referenzvariable, vom statischen Typ type. type kann angegeben werden als:
- ein beliebiger nicht-generischer Datentyp dtype oder der vollständig generische Datentyp data,
- ein beliebiger Objekttyp (Klasse oder Interface) inklusive dem vollständig generischen Objekttyp object.
In den Klammern muss genau ein unbenanntes Argument dobj angegeben werden. Wenn ein Datentyp angegeben ist, muss dobj eine Datenreferenzvariable sein. Wenn ein Objekttyp verwendet wird, muss dobj eine Objektreferenzvariable sein. dobj ist eine allgemeine Ausdrucksposition.
Das Casting von dobj in den angegebenen Typ erfolgt nach den gleichen Regeln wie beim Casting-Operator für Zuweisungen ?=. Wenn der angegebene Typ type spezieller als der statische Typ von dobj ist, handelt es sich um einen Downcast. Wenn type allgemeiner als der statische Typ von dobj ist, handelt es sich um einen expliziten Upcast.
- Ein Konstruktorausdruck CAST dtype( ... ) kann wie eine Datenreferenzvariable vom Typ dtype mit einem Dereferenzierungsoperator ->* und bei strukturierten Typen mit einem Objektkomponenten-Selektor -> fortgesetzt werden.
- Ein Konstruktorausdruck CAST class( ... ) kann wie eine Objektreferenzvariable vom Typ class mit einem Objektkomponenten-Selektor -> fortgesetzt und an allgemeinen Ausdruckspositionen und funktionalen Positionen verwendet werden. Weiterhin ist die Einleitung eines >eigenständigen Methodenaufrufs inklusive verketteten Methodenaufrufen möglich.
Ein einzelner Ausdruck ohne nachfolgenden Objektkomponenten-Selektor -> kann als eigene Anweisung aufgeführt werden. Damit kann beispielsweise durch Abfangen der zugehörigen Ausnahme CX_SY_MOVE_CAST_ERROR die Durchführbarkeit eines Downcasts getestet werden.
Wenn ein einzelner Ausdruck über genau einen nachfolgenden Objektkomponenten-Selektor -> auf ein Datenobjekt oder eine Komponente eines Datenobjekts zeigt,
- kann er als schreibbarer Ausdruck an einer Ergebnisposition aufgeführt werden. Der Typ des Ergebnis muss in den Datentyp type konvertierbar sein mit folgender Einschränkung: Wenn es sich um das Ergebnis eines Bit-Ausdrucks handelt, muss type byteartig oder zeichenartig vom Typ c oder string sein.
- kann bei geeignetem Datentyp eine Offset-/Längenangabe +off(len) angehängt werden, außer wenn die Verkettung als Speicherbereich der Anweisung ASSIGN verwendet wird.
Optional kann vor dem Argument ein LET-Ausdruck let_exp zur Definition lokaler Hilfsfelder aufgeführt werden.
Hinweise
- Der Casting-Operator CAST ist geeignet, um die Deklaration von Hilfsvariablen zu vermeiden, die nur für einen Downcast notwendig sind.
- Ein expliziter Upcast mit dem Casting-Operator CAST ist geeignet, um bei Inline-Deklarationen einen allgemeineren Typ einer deklarierten Referenzvariablen festzulegen.
- Hinter CAST können keine leeren Klammern angegeben werden.
- Da CAST im Gegensatz zu NEW mit einer bestehenden Referenzvariable arbeitet, muss das Resultat nicht gespeichert werden, um das referenzierte Objekt zu erhalten.
- Mit dem Prädikatausdruck IS INSTANCE OF oder der Fallunterscheidung CASE TYPE OF kann überprüft werden, ob ein Cast auf bestimmte Klassen oder Interfaces möglich ist.
- Downcasts sind auch über den INTO-Zusatz der Anweisung WHEN TYPE einer Fallunterscheidung mit CASE TYPE OF möglich.
- Ein zu CAST verwandter Konstruktoroperator ist CONV, der statt eines Castings eine Konvertierung durchführt.
Beispiel
Der folgende Quelltextabschnitt zeigt zwei gleichwertige Downcasts mit den beiden möglichen Casting-Operatoren ?= und CAST. Vor dem eigentlichen Cast wird die Machbarkeit mit dem Prädikatausdruck IS INSTANCE OF überprüft.
Verwendung von Dereferenzierungsoperator und Komponentenselektor bei CAST mit Datentypen. Die Konstruktorausdrücke sind als schreibbare Ausdrücke auf der rechten und linken Seite von Zuweisungen mit dem Zuweisungsoperator = möglich.
In den RTTS wird oft eine Hilfsvariable benötigt, um einen Downcast eines Typbeschreibungsobjekts auf eine spezialisierte Klasse durchzuführen. Die Beispiele zeigen, wie diese durch die Verwendung des Operators CAST eingespart werden kann.
Beispiel
Die Factory-Methode der folgend Klasse gibt eine Referenzvariable vom Typ der Klasse selbst zurück. Um wie empfohlen über Interfacereferenzvariablen auf die im Interface if deklarierten Komponenten zuzugreifen, wird die inline deklarierte Variable iref auf den Typ des Interface gecasted.
Addresses (Business Address Services) Vendor Master (General Section)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 9103 Date: 20240523 Time: 161458 sap01-206 ( 111 ms )