V
Visitor
Gast
Hi!
Ich nutze in meinem Programm eine for-each-Schleife:
In der Zeile mit dem for meldet er allerdings folgenden Fehler:
Da die Variable i ja hundertprozentig sicher ein Item ist, muss der Fehler meines Erachtens folglich irgendwo in der Inventory-Klasse liegen, welche scheinbar kein Item zurückgibt.
Die Implementierung sieht so aus:
Ich habe schon versucht, im Klassen-Kopf mit Generics zu arbeiten...
...oder auch die Rückgabe zu casten:
...obwohl ja eigentlich keine der beiden Dinge erforderlich sein sollte.
Hat auch beides nichts geholfen ;-)
Bin ich total blind? Wo steckt denn jetzt der Fehler?
Ich nutze in meinem Programm eine for-each-Schleife:
Code:
Inventory in = player.getInventory();
System.out.println("Items: "+in.countItems());
for (Item i : in) {
System.out.println(i.Name());
}
In der Zeile mit dem for meldet er allerdings folgenden Fehler:
incompatible types
found: java.lang.Object
required: fwh.Item
Da die Variable i ja hundertprozentig sicher ein Item ist, muss der Fehler meines Erachtens folglich irgendwo in der Inventory-Klasse liegen, welche scheinbar kein Item zurückgibt.
Die Implementierung sieht so aus:
Code:
package fwh;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.NoSuchElementException;
public class Inventory implements Iterable {
private ArrayList<Item> inventory = new ArrayList<Item>();
/** Creates a new instance of Inventory */
public Inventory() {
}
public int countItems() {
return inventory.size();
}
public void addItem(Item item) {
inventory.add(item);
}
public Item getItem(int index) {
return inventory.get(index);
}
public void removeItem(int index) {
inventory.remove(index);
}
public Iterator<Item> iterator() {
return new Iterator<Item>()
{
int pos = 0;
public boolean hasNext() {
return pos < countItems();
}
public Item next() {
if (pos >= countItems()) {
throw new NoSuchElementException();
}
return getItem(pos++);
}
public void remove() {
removeItem(pos);
}
};
}
}
Ich habe schon versucht, im Klassen-Kopf mit Generics zu arbeiten...
Code:
public class Inventory<Item> implements Iterable {
Code:
return (Item)getItem(pos++);
Hat auch beides nichts geholfen ;-)
Bin ich total blind? Wo steckt denn jetzt der Fehler?