poll()与PriorityBlockingQueue.poll()返回类型冲突

时间:2013-05-23 17:38:13

标签: java priority-queue fifo

在下面的poll()方法中,我的IDE抱怨它返回JobSet这一事实。工具提示读取:my.package.JobSetQueue中的 poll()与java.util.concurrent.PriorityBlockingQueue中的poll()冲突;尝试使用不兼容的返回类型

为什么我不能使用我想要的任何返回类型?

public class JobSetQueue extends PriorityBlockingQueue<FIFOEntry<JobSet>> {
    public JobSetQueue() {
        super(1, new JobSetComparator());
    }

    public boolean add(JobSet jobSet) {
        return super.add(new FIFOEntry<JobSet>(jobSet));
    }

    public JobSet poll() {
        /*FIFOEntry<JobSet> entry = super.poll();
        return entry.getEntry();*/
        return super.poll().getEntry();
    }
}



public class FIFOEntry<T> {
    final static AtomicLong seq = new AtomicLong();
    private final long sequenceNumber;
    private final T entry;

    public FIFOEntry(T entry) {
        sequenceNumber = seq.getAndIncrement();
        this.entry = entry;
    }

    public long getSequenceNumber() {
        return sequenceNumber;
    }

    public T getEntry() {
        return entry;
    }
}

1 个答案:

答案 0 :(得分:1)

PriorityBlockingQueue已经有一个带有通用返回类型的方法poll()。您无法覆盖方法并将其返回类型更改为某些不兼容的类型,请参阅method overrides的JLS部分和method return types return-type-substitutable的部分。

在您的情况下,PriorityBlockingQueue<FIFOEntry<JobSet>>会期望poll()返回FIFOEntry<JobSet>