Stack<?>[] stacks = {
new Stack<Bed>(),
new Stack<Bookshelves>(),
new Stack<Chair>(),
new Stack<Desk>(),
new Stack<Table>()
};
Das ist der Code, der das Array von Stapeln macht. Der Grund, warum ich sie in ein Array setze, ist, dass es eine der Voraussetzungen für die Zuweisung ist. Das Programm funktioniert ohne das Array.JAVA-Wildcard-Capture-Fehler mit einem Array von generischen Stacks
Auch der Stack übernimmt Generics, weil ich meinen eigenen Stack erstellen musste (auch eine Voraussetzung für die Zuweisung).
while(sc.hasNext()){
temp = sc.nextLine().split(" ");
if(temp[0].equals("Bed")){
//beds.push(new Bed(temp[1], temp[2]));
stacks[0].push(new Bed(temp[1], temp[2]));
}else if(temp[0].equals("Table")){
//tables.push(new Table(Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]), temp[4]));
stacks[4].push(new Table(Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]), temp[4]));
}else if(temp[0].equals("Desk")){
//desks.push(new Desk(temp[1],temp[2], Integer.parseInt(temp[3]), Integer.parseInt(temp[4])));
stacks[3].push(new Desk(temp[1],temp[2], Integer.parseInt(temp[3]), Integer.parseInt(temp[4])));
}else if(temp[0].equals("Chair")){
//chairs.push(new Chair(temp[1], temp[2]));
stacks[2].push(new Chair(temp[1], temp[2]));
}else if(temp[0].equals("Bookshelves")){
//bookshelves.push(new Bookshelves(Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]), Integer.parseInt(temp[4]), temp[5]));
stacks[1].push(new Bookshelves(Integer.parseInt(temp[1]), Integer.parseInt(temp[2]), Integer.parseInt(temp[3]), Integer.parseInt(temp[4]), temp[5]));
}else{
color = temp[0];
}
}
Dieser Code ruft die Informationen aus der Textdatei ab und verschiebt die Objekte in den Stapel.
Ich erhalte eine Fehlermeldung,:
push(capture#627 of ?) in Stack<capture#627 of ?> cannot be applied to (Bed)
Dieser Fehler wiederholt sich für alle Klassen, die ich geschaffen habe.
Die Teile, die auskommentiert sind, ist der Code, der vorher arbeitete, als ich einen einzelnen Stapel für jedes Objekt machte.
Ich kann nicht alles in das Array setzen, nachdem ich alles in den Stack geschoben habe, da Punkte für unnötige Zwischenvariablen herausgenommen werden.
Versucht, dass, hat nicht funktioniert. Die Option 'b' ist für die Zuweisung nicht zulässig. – prunes4u
Ich meinte es ernst, als ich sagte, dass dies die einzigen Methoden waren, dies richtig zu machen oder typsicher zu machen. Die Alternative ist, die Typsicherheit zu verlieren und mit unsicheren Rohcasts zu beginnen: '(Stack) stacks [0] .push' nimmt jedes' Object'. Ewwwwwwwww. –
Ja, ich bin mir nicht sicher, warum eine Aufgabe das erfordern würde. Es scheint, als würde es schlechtes Design lehren. –