我是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)?或者我在这里犯了逻辑错误?
答案 0 :(得分:3)
你需要使用泛型:
LinkedList<Rectangle> stack = new LinkedList<Rectangle>();
这告诉Java LinkedList将包含Rectangles。如果您尝试插入不是Rectangle的任何内容,则会出现编译时错误。由于Java可以告诉(在编译时)stack
只包含Rectangle
,因此它知道(在编译时)您可以在getX()
的结果上调用stack.peek()