1

我对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)吗?还是我在这里犯了一个逻辑错误?

4

1 回答 1

3

您需要使用泛型:

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

这告诉 Java LinkedList 将包含矩形。如果您尝试插入不是 Rectangle 的任何内容,您将收到编译时错误。由于 Java 可以(在编译时)告诉stack它只包含s,它知道(在编译时)Rectangle您可以调用getX().stack.peek()

于 2012-04-09T16:34:36.460 回答