Hallo Forum,
In einem bestehenden Kontext, an dem ich leider nichts ändern kann, ist folgendes umgesetzt:
Es gibt diverse Klassen die Interfaces implementieren. Die Interfaces vererben von einander.
Bspw.
*
*
*
Mein Algo soll die verschiedenen Klassen anhand des Interfaces filtern. Da die vollstände Vererbung der Interfaces sich jederzeit ändern kann und heute schon über 5 Ebenen hat, suche ich quasi nach einer Art (also idealerweise ohne Reflections) zu prüfen ob eine Klasse direkt ein Interface implementiert (und nicht erst in 2. oder 3. Vererbungsstufe).
Also bswp. ein Stückchen Code in der Form
ist schnell geschrieben, aber die
Vielleicht habt ihr da eine Idee.
VG;
In einem bestehenden Kontext, an dem ich leider nichts ändern kann, ist folgendes umgesetzt:
Es gibt diverse Klassen die Interfaces implementieren. Die Interfaces vererben von einander.
Bspw.
*
InterfaceA
*
InterfaceB extends InterfaceA
*
InterfaceC extends InterfaceB
Mein Algo soll die verschiedenen Klassen anhand des Interfaces filtern. Da die vollstände Vererbung der Interfaces sich jederzeit ändern kann und heute schon über 5 Ebenen hat, suche ich quasi nach einer Art (also idealerweise ohne Reflections) zu prüfen ob eine Klasse direkt ein Interface implementiert (und nicht erst in 2. oder 3. Vererbungsstufe).
Also bswp. ein Stückchen Code in der Form
if (obj instanceof InterfaceB) then {
...
} else
if (obj instanceof InterfaceA) then {
...
}
ist schnell geschrieben, aber die
instanceof
Anweisungen fangen oft auch mehr, als mir lieb ist. Beispielsweise fängt das obj instanceof InterfaceB
auch InterfaceC
mit, was ich so in dem Kontext nicht brauchen kann. In Realität gliedern sich hier die Interfaces auch nicht so linear auf, sondern mehrfach baumartig. Da ich aber nicht sicherstellen kann, das es mit der nächsten Version des Frameworks nicht auch noch ein InterfaceD
geben kann, empfinde ich einen Code nicht sehr elegant per Code die nicht gewollten Interfaces auszuschließen.Vielleicht habt ihr da eine Idee.
VG;