0

在下面的 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;
    }
}
4

1 回答 1

1

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

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

于 2013-05-23T17:40:14.370 回答