Hallo Jungs ich hab ein Problem und zwar folgendes:
In einer Klasse muss ich ein Objekt einer Klasse erzeugen, das erst zur Laufzeit feststeht. Dies macht man ja in etwa so:
so weit so gut.
strat1 ist ein String zum Beipsiel Abwechselnd2. Strategie ein Interface.
Eigentlich vergleichbar wie bei diesem Beispiel hier: (Listing4301)
Allerdings liegt bei mir das Interface Strategie und all die Klassen (von der eine zur Laufzeit instanziert wird) in einem Package strategien - also eine Verzeichnisebene drunter:
eine Klasse die dann möglicherweise instanziert werden soll sieht dann in etwa so aus:
Irgendwie findet er aber die Klasse nicht. Er wirft jedesmal eine ClassNotFoundException... Kann mir da jemand weiterhelfen?
In einer Klasse muss ich ein Objekt einer Klasse erzeugen, das erst zur Laufzeit feststeht. Dies macht man ja in etwa so:
Code:
import strategien.*;
......
......
try {
Class c = Class.forName(this.strat1);
Object o = c.newInstance();
((Strategie)o).sagWas();
}
catch(ClassNotFoundException e) {
System.out.println("Klasse nicht gefunden!");
}
catch(InstantiationException e){
System.out.println(e.toString());
}
catch(IllegalAccessException e){
System.out.println(e.toString());
}
strat1 ist ein String zum Beipsiel Abwechselnd2. Strategie ein Interface.
Eigentlich vergleichbar wie bei diesem Beispiel hier: (Listing4301)
Allerdings liegt bei mir das Interface Strategie und all die Klassen (von der eine zur Laufzeit instanziert wird) in einem Package strategien - also eine Verzeichnisebene drunter:
Code:
package strategien;
public interface Strategie {
public void sagWas();
}
eine Klasse die dann möglicherweise instanziert werden soll sieht dann in etwa so aus:
Code:
package strategien;
public class Abwechselnd2
implements Strategie{
public void sagWas(){
System.out.println("Hallo - ich bin A2");
}
}
Zuletzt bearbeitet: