2012-04-09 68 views
1

我是relativly新的Java對象的方法...使用存儲在堆棧(JavaFX的)

我得到的矩形陣列和堆棧至極充滿了一些名單的矩形

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]); 
} 

訪問從列表中選擇矩形的座標我會打電話「的getX()」方法

list[listNr].getX(); 

將返回x值。

但現在我想要訪問堆棧中的矩形的x座標,我該怎麼做?

我不明白爲什麼這不會工作:

stack.peek().getX(); 

我一直認爲我的情況下,堆棧[i]和陣列[I]將指向同一個對象,因爲...

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

會給我相同的輸出: 「列表矩形@ 863d22」和「堆矩形@ 863d22」

,如果我指的是同objec噸,我不應該能夠使用對象的方法(如getter和setter)?或者我在這裏做出邏輯錯誤?

回答

3

您需要使用泛型:

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

此通知Java LinkedList的將包含矩形。如果您嘗試插入任何不是矩形的東西,您將收到編譯時錯誤。由於Java可以知道(編譯時)stack將只包含Rectangle s,它知道(在編譯時)可以調用getX()stack.peek()的結果。

+0

啊好吧謝謝,現在工作正常! – Red 2012-04-09 17:10:55

+0

@紅色如果答案有幫助,請將其標記爲已接受。 – pmoule 2012-04-10 06:58:01