所以我有一个充满“Car”对象的Queue(由链表实现)。 我的主要目标是根据对象的“num”参数将每个对象从队列转移到堆栈中。
其构造函数中的“Car”对象参数之一是“num”。 我想说点什么
if(the object @ head of queue's "num" == 2)
{
Stack1.push(queue.remove());
}
但它不会让我做“if(queue.peek()。num == 2”)
那么任何想法? (顺便说一下,它的Java版本的队列不是自定义的。)
答案 0 :(得分: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) ...
这更合理。类型参数<Car>
让编译器知道此Queue
只能 包含Car
个对象,因此访问其上的num
字段是安全的