Ich möchte mit Generics arbeiten und den Code möglichst generisch halten. Dazu habe ich nun ein Interface Geschaeft und eine abstrakte Klasse AbstraktesGeschaeft, das wiederum Methoden für Baeckerei und Metzgerei kapselt:
Wie bereits oben beschrieben, scheitert der Ansatz im fehlenden generischen Konstruktor. Kann man das Problem irgendwie lösen?
Code:
interface Geschaeft<P extends Produkt> {
public P erstelleProdukt();
}
interface Produkt {
..
}
class Backware implements Produkt {
..
}
class Schnitzel implements Produkt {
..
}
class Baeckerei extends AbstraktesGeschaeft<Backware> {
// Methoden sollen vom abstrakten Geschäft geerbt werden, so dass
// erstelleProdukt automatisch eine Backware erzeugt.
}
class Metzgerei extends AbstraktesGeschaeft<Schnitzel> {
// Methoden sollen vom abstrakten Geschäft geerbt werden, so dass
// erstelleProdukt automatisch ein Schnitzel erzeugt.
}
abstract class AbstraktesGeschaeft<P extends Produkt> implements Geschaeft
{
public P erstelleProdukt() {
return new P(); // !!! Fehler: Es kann keine Instanz von P erzeugt werden !!
}
}