Ansicht
Dokumentation

ABENCONSTRUCTOR_EXPRESSION_CAST - CONSTRUCTOR EXPRESSION CAST

ABENCONSTRUCTOR_EXPRESSION_CAST - CONSTRUCTOR EXPRESSION CAST

ROGBILLS - Synchronize billing plans   BAL_S_LOG - Application Log: Log header data  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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 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.

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.

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 )