Ma question est juste en tant que titre, quelle est la différence entre = code> et
? = code> dans les opérateurs ABAP? P>
4 Réponses :
c.f. Explication générale chez Wikipedia . P> Exemple: P> ? = code> est le Opérateur de casting . Il est utilisé pour des missions entre variables de référence, dont l'affectabilité est vérifiée dès que le temps d'exécution commence.
DATA fruit TYPE REF TO zcl_fruit.
...
case fruit->type.
when 'apple'.
seeds = CAST zcl_apple( fruit )->seeds.
when 'apricot'.
seeds = VALUE #( ( CAST zcl_apricot( fruit )->kernel ) ).
endcase.
Notez qu'il est principalement utilisé pour lancer différents types de variables de référence. Lors de l'attribution entre le même type de variable de référence, vous pouvez toujours utiliser =
Je veux juste ajouter cet opérateur est utilisé principalement dans Downcast, lorsque vous affectez une Superclass Obj à une référence d'une sous-classe plus spécifique, elle nécessite une explicite? = (Opérateur de coulée), car cela peut conduire à une erreur d'exécution: Sous-classe? = superclasse
? = est utilisé pour taper de jeter une référence d'objet d'une classe héritée à un objet de la classe Super à partir duquel elle est dérivée. P>
? = p>
Type Casting vous aide à faire référence à plusieurs références d'objets de sous-classes dont le type est résolu uniquement au moment de l'exécution. La référence d'objet de la classe parent peut contenir les objets et il y aurait souvent une méthode de classe parent qui peut être utilisée pour déterminer quel objet de la classe de classe est la référence de type de type à l'exécution du temps d'exécution. P>
Il s'agit d'opérateur de casting (? =) pour des affectations entre les variables de référence, mais en particulier le parole, il s'agit d'un opérateur de coulée. P>
? = est utilisé pour désigner un objet de super classe par son objet hérité de classe dans la forme p>
[Référence d'objet de la classe mère]? = [Référence d'objet de la classe héritée] p>
Ceci est utile lorsque la résolution de type se produit au moment de l'exécution. Tandis que? = Peut être spécifié pour les citadins également, il n'est généralement pas nécessaire. P>