For-each: Incompatible types

Status
Nicht offen für weitere Antworten.
V

Visitor

Gast
Hi!

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 {
...oder auch die Rückgabe zu casten:
Code:
return (Item)getItem(pos++);
...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?
 
G

Guest

Gast
Ah ich bin doch ein... Vielen Dank, du hast natürlich recht!

LG
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben