2012-04-09 62 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