2012-04-09 5 views
1

i java relativly bin neu ...Methoden von Objekten gespeichert in Stapeln (javafx) mit

Ich habe eine Reihe von Rechtecken und ein Stapel Weicht ist mit einigen der Liste des Rectangles gefüllt

int listNr; 

Rectangle[] list = new Rectangle[100]; 
LinkedList stack = new LinkedList(); 

public void fillList(){ 
    for (int i = 0; i < list.length; i++){ 
     list[i] = new Rectangle(10,10);  
    }  
} 

public void fillStuff(){ 
    stack.add(list[listNr]); 
} 

zuzugreifen a aus der Liste der einer Koordinate i Rectangle nennen würde den "getX()" Methode

list[listNr].getX(); 

dieses den x-Wert zurückkehren würde.

aber jetzt möchte ich auf die x-Koordinate eines Rectangle durch den Stapel zugreifen, Wie mache ich das?

Ich verstehe nicht, warum das nicht funktionieren:

stack.peek().getX(); 

ich dachte immer, dass der Stapel in meinem Fall [i] und das Array [i] auf das gleiche Objekt beziehen würde, da ...

System.out.println("stack "+stack.peek()); 
System.out.println("list "+list[listNr]); 

würde mir die gleiche Ausgabe: "-Liste Rectangle @ 863d22" und "Stack Rectangle @ 863d22"

und wenn ich auf die gleiche objec verweist t, sollte ich nicht in der Lage sein, die Methoden (wie Getter und Setter) des Objekts zu verwenden? oder mache ich hier einen logischen Fehler?

Antwort

3

Sie müssen Generics verwenden:

LinkedList<Rectangle> stack = new LinkedList<Rectangle>(); 

Dies sagt Java, dass die LinkedList Rectangles enthalten wird. Wenn Sie versuchen, etwas einzufügen, das kein Rectangle ist, erhalten Sie einen Kompilierungsfehler. Da Java (zur Kompilierzeit) sagen kann, dass stack nur Rectangle s enthält, weiß es (zur Kompilierzeit), dass Sie getX() über das Ergebnis stack.peek() aufrufen können.

+0

ahh ok danke, funktioniert jetzt gut! – Red

+0

@Red Wenn die Antwort hilfreich war, markieren Sie sie bitte als akzeptiert. – pmoule

Verwandte Themen