使用存储在堆栈中的对象的方法(javafx)

时间:2012-04-09 16:31:40

标签: java javafx-2

我是java的新手......

我有一个矩形数组和一个堆栈,里面装满了一些列表的矩形

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

从列表中访问Rectangle的坐标我将调用“getX()”方法

list[listNr].getX();

这将返回x值。

但现在我想通过堆栈访问Rectangle的x坐标,我该怎么做?

我不明白为什么这不起作用:

stack.peek().getX();

我一直以为在我的情况下,stack [i]和array [i]会引用相同的对象,因为......

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

会给我相同的输出: “list Rectangle @ 863d22”和“stack Rectangle @ 863d22”

如果我引用相同的对象,我是否应该能够使用对象的方法(如getter和setter)?或者我在这里犯了逻辑错误?

1 个答案:

答案 0 :(得分:3)

你需要使用泛型:

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

这告诉Java LinkedList将包含Rectangles。如果您尝试插入不是Rectangle的任何内容,则会出现编译时错误。由于Java可以告诉(在编译时)stack只包含Rectangle,因此它知道(在编译时)您可以在getX()的结果上调用stack.peek()