Hi,
ich versuche gerade die ersten Schritte mit Java und habe ein kleines Problem..
ich habe hier ein Beispiel gefunden das das ganze gut zeigt.
Ich wollte das ganze in einem Switch laufen lassen, was aber ja nicht funktioniert, das switch nur Byte, Char,... akzeptiert.
Also habe ich mich auf ein Zuweisungsarray gestützt.
Und möchte nun statt x verschiedene Aufrufe hier nur einen haben, der Dynamisch passiert, anhand es Prefixes.
Und hier ist das Problem.
Ich erhalte hier "Object obj = pizza.newInstance();" den Datentyp "Object", ich brauche aber den Typ "Pizza", den mit die Klassen xxxPizza zurück geben würden.
Hoffe hierk ann mir einer helfen und versteht mich^^
Unter PHP war es einfach:
ich versuche gerade die ersten Schritte mit Java und habe ein kleines Problem..
ich habe hier ein Beispiel gefunden das das ganze gut zeigt.
Java:
package headfirst.factory.pizzas;
public class EinfachePizzaFabrik {
public Pizza createPizza(String type) {
Pizza pizza = null;
if (type.equals("Salami")) {
pizza = new SalamiPizza();
} else if (type.equals("Thunfisch")) {
pizza = new ThunfischPizza();
} else if (type.equals("Krabben")) {
pizza = new KrabbenPizza();
} else if (type.equals("Vegetarisch")) {
pizza = new VegetarischePizza();
}
return pizza;
}
}
Ich wollte das ganze in einem Switch laufen lassen, was aber ja nicht funktioniert, das switch nur Byte, Char,... akzeptiert.
Also habe ich mich auf ein Zuweisungsarray gestützt.
Und möchte nun statt x verschiedene Aufrufe hier nur einen haben, der Dynamisch passiert, anhand es Prefixes.
Java:
String[] zahlen = { "salami", "thunfisch", "vegetarisch", "bacon" };
String ergebnis = "-1";
for (int i=0; i<zahlen.length; i++) {
if (zahlen[i].equals(prefix)){
ergebnis = Integer.toString(i+1);
}
}
if(ergebnis != "-1"){
System.out.println(ergebnis);
String sClassName = prefix.toUpperCase()+"Pizza";
Class pizza = sClassName.getClass();
Object obj = pizza.newInstance();
}else{
System.out.println("Kein passendes Prefix gefunden: " + prefix + " (Pizza | PizzaFactory.java)");
}
Und hier ist das Problem.
Ich erhalte hier "Object obj = pizza.newInstance();" den Datentyp "Object", ich brauche aber den Typ "Pizza", den mit die Klassen xxxPizza zurück geben würden.
Hoffe hierk ann mir einer helfen und versteht mich^^
Unter PHP war es einfach:
PHP:
$sName = prefix."Pizza";
$oPizza = new $sName():