0

所以我有一个充满“汽车”对象的队列(由链表实现)。我的主要目标是根据对象的“num”参数将队列中的每个对象转移到堆栈中。

“Car”对象在其构造函数中的参数之一是“num”。我想说类似的话

if(the object @ head of queue's "num" == 2)
{
Stack1.push(queue.remove());
}

但它不会让我做 "if(queue.peek().num==2")

那么有什么想法吗?(顺便说一下,它的 Java 版本的队列不是自定义的。)

4

1 回答 1

0

您可能没有正确使用泛型来让编译器知道您正在尝试做的事情是可以的。即你可能会说:

Queue cars = ...;
if (cars.peek().num == 2) ...

这与

Queue cars = ...;
Object car = cars.peek();
if (car.num == 2) ...

显然不能工作,因为Object没有num字段。相反,您可能想要:

Queue<Car> cars = ...;
if (cars.peek().num == 2) ...

这就像说

Queue<Car> cars = ...;
Car car = cars.peek();
if (car.num == 2) ...

这更合理。type 参数<Car>让编译器知道 thisQueue只能包含对象,因此访问其上的字段是安全的。Carnum

于 2013-10-26T01:21:57.087 回答