2013-10-26 3 views
0

그래서 "Car"개체로 가득 찬 Queue (연결된 목록으로 구현 됨)가 있습니다. 내 주요 목표는 큐의 각 개체를 개체의 "num"매개 변수에 따라 스택으로 전송하는 것입니다.큐에서 스택으로 개체 이동

생성자에서 "Car"개체의 매개 변수 중 하나는 "num"입니다. 내가 말하고 싶은

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

하지만 늘 나를하자 같은 "경우을 (queue.peek(). NUM 개의 == 2")

그래서

어떤 아이디어? (대기열의 Java 버전은 맞춤형이 아닙니다.)

+1

* 왜 그렇게 할 수 없습니까? 어떤 오류가 발생하고 있습니까? – templatetypedef

+0

'Car' 클래스와'peek'의 구현을 보여줄 필요가 있습니다. 나는'자동차'의'num' 속성에 접근 할 수 없다고 추측하지만 확실한 정보를 제공하지 못했습니다. – Aurand

답변

0

컴파일러에서 수행하려는 작업이 올바르게 작동한다는 것을 알기 위해 제네릭을 제대로 사용하지 않았을 수 있습니다. 나는. Object 이후 num 필드가없는, 작동하지 않을 수 분명해야

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

동일

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

: 당신은 아마 같은 것을 말하는 것입니다. 대신, 당신은 아마 원하는 : 훨씬 더 합리적이다

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

말하는 것과 같다

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

합니다. 유형 매개 변수 <Car>을 사용하면 컴파일러는 Queue에만 개의 객체를 포함 할 수 있으므로 Car 객체를 포함하므로 num 필드에 액세스하는 것이 안전합니다.

+0

아니, 나는 똑같은 짓을 했어. 아직 매개 변수에 접근하지 못하게 해. – user2855405

+0

질문에 더 많은 정보를 추가해야합니다. 이는 제공된 제한된 정보를 바탕으로 한 추측에 불과합니다. –