Hallo Robert!
Danke! 
Ich habe im Moment das gleiche Problem wie Du, funktioniert es bei Dir inzwischen?
Ich möchte das Strategy Pattern (-> Gamma) für eine Raum-Kurs Allokation implementieren. Es müssen also Kurse auf bestimmte Räume verteilt werden. Dabei können verschiedene Strategien eingesetzt werden. Dies habe ich als Interface realisiert. Die ausgewählte Strategie wird dem Kurs-Konstruktor gleich als String mitgegeben.
Meine Allocation-Klasse soll nun je nach gewählter Strategie das jeweilige Strategiy-Objekt erzeugen. Bisher habe ich das zum Testen einfach mal so gemacht…
switch (strategyNo)
{
case 1:
new Strategy1(kursID);
break;
case 2:
new Strategy2(kursID);
break;
// usw...
}
…aber das ist natürlich im Hinblick auf Erweiterabarkeit nicht so schön. Es sollten eigentlich dynamisch neue Strategien hinzugeladen werden können, indem man einfach neue Strategy-Implementierungen bereitstellt, die vom Strategy-Interface abgeleitet sind.
Ich würde jetzt also gerne die Strategy-Objekte auch dynamisch mit Class.forName() erzeugen, aber irgendwie bekomme ich das nicht hin. Der Compiler sagt immer: „Inkompatible Typen: java.lang.Object wurde gefunden, gui.Strategy ist erforderlich.“ Casten bringt auch nichts.
Es funktioniert jedoch, wenn ich…
Class c = Class.forName(strategy);
Object myStrategy = c.newInstance();
… schreibe, aber so kann ich dem Strategy-Konstruktor die Variable kursID nicht mitgeben. Wie mache ich es richtig?
Grüße, Tanja