Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ewx
du hast es doch anscheinend schon...?!
Code: Alles auswählen.
INTERFACE if_marker.
ENDINTERFACE.
CLASS appl DEFINITION.
PUBLIC SECTION.
METHODS set IMPORTING intf TYPE REF TO if_marker.
ENDCLASS.
CLASS mainobj DEFINITION.
PUBLIC SECTION.
INTERFACES if_marker.
METHODS hello.
ENDCLASS.
CLASS appl IMPLEMENTATION.
METHOD set.
DATA upcast TYPE REF TO object.
upcast = CAST #( intf ).
CALL METHOD upcast->('HELLO').
ENDMETHOD.
ENDCLASS.
CLASS mainobj IMPLEMENTATION.
METHOD hello.
MESSAGE 'Hello' TYPE 'I'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(myobj) = NEW mainobj( ).
DATA(myappl) = NEW appl( ).
myappl->set( myobj ).
Code: Alles auswählen.
INTERFACE dummy_marker.
ENDINTERFACE.
INTERFACE hello_world_api.
INTERFACES dummy_marker.
METHODS hello.
ENDINTERFACE.
CLASS hello_world DEFINITION.
PUBLIC SECTION.
INTERFACES hello_world_api.
ENDCLASS.
CLASS hello_world IMPLEMENTATION.
METHOD hello_world_api~hello.
MESSAGE 'hello world' TYPE 'I'.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
DATA(marker_impl) = CAST dummy_marker( NEW hello_world( ) ).
DATA(upcasted) = CAST hello_world_api( marker_impl ).
upcasted->hello( ).
wenn es sich nur um eine Methode handelt, ist das doch aber kein Problem.ralf.wenzel hat geschrieben: ↑11.12.2020 12:56Das Problem ist, dass ich dann alle Klassen, die das INTF nutzen, ändern müsste, damit sie das umfassende INTF stattdessen nutzen. Wäre unschön, wir reden hier von zwei Dutzend Klassen.
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag:
msfox