使用Linked Queue dequeue方法错误无法将对象转换为类

时间:2016-02-18 19:56:02

标签: java

我们正在建造一个火车站模拟器,当我们开始创建我们的方法时,我们的出列方法出错了。

类型不匹配:无法从Object转换为Passenger 包SimulateWaitingLine;

 public class Station {
        private QueueInterface waiting;
        private int timeToNextStation;
        public Station(int timeToNext){
            waiting = new CircularLinkedQueue();
            timeToNextStation = timeToNext;
        }
        public void addPassengers(Passenger rider){
            waiting.enqueue(rider);
        }
        public boolean isWaiting(){
            return !waiting.isEmpty();
        }
        public Passenger getPassenger(){
            return waiting.dequeue(); //this is where the error is
        }
        public int getTimeToNextStation(){
            return timeToNextStation;
        }
    }

这是我们对链接队列的定义 包SimulateWaitingLine;

public class CircularLinkedQueue < T > implements QueueInterface<T>
{
    private Node queueNode;
    private Node freeNode;
    public CircularLinkedQueue()
    {
        freeNode = new Node();
        freeNode.setNextNode(freeNode);
        queueNode = freeNode;
    }
    private class Node
    {
        private T data;
        private Node next;
        public T getData() { return data; }
        public void setData(T inData) { data = inData; }
        public Node getNextNode() { return next; }
        public void setNextNode(Node inNext) { next = inNext; }

    }
    public void enqueue(T newEntry)
    {
    freeNode.setData(newEntry);
    if(isChainFull())
    {
        Node newNode = new Node();
        freeNode.setNextNode(newNode);
    }
    freeNode = freeNode.getNextNode();
    }
    @Override
    public T dequeue() {
        // TODO Auto-generated method stub
        T front = getFront();
        assert !isEmpty();
        queueNode.setData(null);
        queueNode = queueNode.getNextNode();
        return front;

    }
    @Override
    public T getFront() {
        // TODO Auto-generated method stub
        T frontNode = null;
        if(!isEmpty())
            queueNode = queueNode.getNextNode();
        return (T) queueNode;


    }
    public boolean isChainFull() {
        return queueNode == freeNode.getNextNode();
    }
    @Override
    public boolean isEmpty() {
        // TODO Auto-generated method stub
    return queueNode == freeNode;

    }

    @Override
    public void clear() {
        // TODO Auto-generated method stub

    }

    }

1 个答案:

答案 0 :(得分:3)

将队列的泛型类型设置为Passenger

private QueueInterface<Passenger> waiting;

更多关于generics