Objekt implementiert Interface? Thema ist als GELÖST markiert

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Objekt implementiert Interface?

Beitrag von Thomas R. (Expert / 694 / 43 / 27 ) » 12.12.2019 08:15

Hallo,
wie kann ich am einfachsten prüfen, ob ein Objekt ein bestimmtes Interface implementiert hat?
Ausgangspunkt ist das Objekt, nicht die Klasse...

MfG
Thomas R.


Re: Objekt implementiert Interface?

Beitrag von a-dead-trousers (Top Expert / 3319 / 90 / 844 ) » 12.12.2019 08:21

In der "neuen" Syntax empfiehlt sich meiner Meinung nach CASE TYPE OF weil man damit kein Exceptionhandling (= Performancefresser) benötigt.
In der "alten" Syntax verwendet man meistens einen CAST um den Typ zu prüfen. Schlägt der CAST fehl, wird eine Exception ausgelöst die man abfangen muss.

Code: Alles auswählen.

CASE TYPE OF lr_object.
  WHEN TYPE zif_test INTO DATA(lr_test).
* Das Objekt implementiert das Interface.
  WHEN OTHERS.
* Das Objekt implementiert das Interface nicht.
ENDCASE.

DATA: lr_test TYPE REF TO zif_test.
TRY.
    lr_test ?= lr_object.
* Das Objekt implementiert das Interface.
  CATCH cx_root.
* Das Objekt implementiert das Interface nicht.
ENDTRY.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag (Insgesamt 2):
Thomas R. (12.12.2019 08:28) • deejey (12.12.2019 10:14)

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.07
Basis: 7.40

Seite 1 von 1