Dynamische Vererbung

MaR-V-iN

Grünschnabel
Hallo,

Ich habe folgendes Problem:
Ich habe eine vorgegebene Klasse A von der meine Klasse B erbt. Klasse A ist jedoch je nach Laufzeitumgebung unterschiedlich, bei abweichenden Signaturen schlägt die Vererbung somit teilweise zur Laufzeit fehl.
Kann man (beispielsweise per Reflection) von der Klasse A erben ohne die finale Laufzeitumgebung zu kennen? (das ist natürlich nur mit Einschränkungen möglich, wenn neue abstrakte Methoden hinzukommen, hier könnte man aber auch einfach testweise eine Exception werfen).

Über einen hilfreichen Hinweis zu dieser Situation wäre ich dankbar.

MaR-V-iN
 
Um deine Frage zu verstehen:
Das heißt die Klasse A ändert ihre eigenschaften, sprich Methoden zu laufzeit ?
Meinst du zum Besipiel: Die A.jar lib mit version 0.5 wurde durch die A.jar lib mit der Version 1.0 ersetzt?

Gruß
Fabian
 
Hi,

die A.java ist je nach Kunden / Umgebung unterschiedlich, aber du willst von der erben? Schaut mich nach einem schlechten Design an...

Aber um deine Frage zu beantworten: Ich denke nicht, dass das so einfach geht. Du könntest natürlich eine Proxy-Klasse schreiben, die die Zugriffe auf A kapselt (somit könntest du das per Reflection machen, auch das mit der Exception wäre dann gleich mit dabei), aber das ist sehr aufwändig.

Grüße,
BK
 
Das Design habe ich mir nicht ausgesucht, ich habe auch keinen Einfluss auf die Laufzeitumgebung.
Eine Kapselung ist nicht möglich, da es tatsächliche Vererbung sein muss (es gibt eine Klasse C in der selben lib wie Klasse A, mit einer Methode die eine Instanz von A erwartet).
Insbesondere kann ich auch nicht für jede Version der Laufzeitumgebung eine eigene Klasse machen, da ich diese nicht alle kenne.
 
aber wenn du nicht davon ausgehen kannst welche abstrakten methoden a hat kannst du schlecht davon erben.
Ich glaube das ist so ein Fass ohne boden.
Außer du kompilierst zur Laufzeit. Aber dann viel Spaß...
ne Fabrik wäre noch ne möglichkeit. Das ist aber ne menge anpassung für jede verschiedene Oberklasse.
Da kannst au gleich für jeden Kunden einzeln das Programm anpassen.

Deshalb stellt man ein Interface bereit das vorgibt welche methoden exsitieren müssen!
 
Zurück