Hallo zusammen..
folgendes Szenario: Ich habe eine Basisklasse von der mehrere andere Klassen erben. Eine bestimmte Methode erwartet ein Objekt der Basisklasse, bekommt aber in der Regel ein Objekt einer der Subklassen übergeben. Ich denke an einem CodeSchnipsel wird deutlicher, was ich möchte, als bei einer ausschweifenden Erklärung:
Ich kann natürlich mit instanceof jeden potentiellen Subtyp abklappern und dann entsprechend ein neues Objekt erstellen. Ich würde das aber ganz gerne allgemeiner halten, wenn das irgendwie geht, da die Liste an Subtypen relativ groß ist und ich nicht ständig diese Methode anpacken möchte, wenn neue hinzu kommen.
Wie kann man das eleganter lösen? (Die Lösung sollte auch noch unter Java 1.5 laufen)
Viele Grüße
Fant
folgendes Szenario: Ich habe eine Basisklasse von der mehrere andere Klassen erben. Eine bestimmte Methode erwartet ein Objekt der Basisklasse, bekommt aber in der Regel ein Objekt einer der Subklassen übergeben. Ich denke an einem CodeSchnipsel wird deutlicher, was ich möchte, als bei einer ausschweifenden Erklärung:
Java:
public class A {...}
public class B extends A { ... }
public class C extends A { ... }
public class Test {
private A a;
public void macheEtwas(A a) {
// ...
// hier möchte ich this.a ein neues Objekt vom tatsächlich übergebenen Typ zuweisen.
}
public void main(String [] args) {
a = new B();
macheEtwas(a);
// Jetzt soll a ein neues Objekt vom Typ B sein
a = new C();
macheEtwas(a);
// Jetzt soll a ein neues Objekt vom Typ C sein
}
Ich kann natürlich mit instanceof jeden potentiellen Subtyp abklappern und dann entsprechend ein neues Objekt erstellen. Ich würde das aber ganz gerne allgemeiner halten, wenn das irgendwie geht, da die Liste an Subtypen relativ groß ist und ich nicht ständig diese Methode anpacken möchte, wenn neue hinzu kommen.
Wie kann man das eleganter lösen? (Die Lösung sollte auch noch unter Java 1.5 laufen)
Viele Grüße
Fant