Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
ist es denn nicht möglich einer abstracten Methode einen generischen Parameter hinzuzufügen, sodass die Erben, immer mit ihren eigenen Typ arbeiten können. Sieht ein bissl komisch aus weil die Klasse vor dem generischen Parameter fehlt, so kanns nicht funktionieren aber wie ist die Alternative?
Java:
public abstract void setWindow( <? extends MyFrame> window);
Nehmen wir an der Erbe wäre childFrame extends MyFrame...
Nun sollte die Methode in childFrame so aussehn
Code:
public void setWindow( childFrame window);
Da die abstracte Methode "setWindow" in jedem Erben neu implementiert werden muss, sollte es diese Möglichkeit doch geben?
Ich kenn zwar nicht die genauen Hintergründe deiner Anwendung bzw. deines Quellcodes, aber probier es mal mit einem Interface.
Java:
public abstract void setWindow( IMyFrame window);
Mit dem Interface ist es dir ja egal, welches der eventuell vielen Kinder es ist. Wenn du dann iwann etwas bestimmtes brauchst, dann machst du halt einen cast.
Mit dem Interface ist es dir ja egal, welches der eventuell vielen Kinder es ist. Wenn du dann iwann etwas bestimmtes brauchst, dann machst du halt einen cast.
Mit dem Interface ist es dir ja egal, welches der eventuell vielen Kinder es ist. Wenn du dann iwann etwas bestimmtes brauchst, dann machst du halt einen cast.
Ich programmiere schon seit mehreren Jahren mit Java und diesen Cast hinter einem Interface habe ich bisher immer nur in JUnit-Tests vollzogen, weil ich dann in den konkreten Objekten noch zusätzliche Möglichkeiten geschaffen habe, um die Inhalte darzustellen, ohne den Quelltext mit Log-Ausgaben zu überfrachten oder ewig und drei Tage den Debugger zu bemühen. Im reinen Produktiveinsatz habe ich es immer vermieden. Denn durch geschicktes Design brauche ich einen Cast garnicht.
Das es die ultimative Lösung ist, sag ich ja garnicht. Aber es ist eine von vielen Wegen nach Rom.
Ja, aber so müssten ja alle Klassen von "Something" erben und nicht von MyFrame.
Und selbst dann, ist die folge, dass wenn ich "Something" erstmal initialisiert habe, dann haben alle Erben von "Something" den gleichen Parameter. Und da wären wir wieder am Anfang...
Bsp.: new Something<MyFrame>();
childFrame extends Something...
Java:
public class childFrame() { ...
public void setWindow( MyFrame window);
}
##############################
Zu: EisteeTrinker:
Casten könnt ich auch mit den abstracten Methoden, dazu brauch ich nicht extra ein Interface.