在下面的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;
}
}
答案 0 :(得分:1)
PriorityBlockingQueue
已经有一个带有通用返回类型的方法poll()
。您无法覆盖方法并将其返回类型更改为某些不兼容的类型,请参阅method overrides的JLS部分和method return types return-type-substitutable
的部分。
在您的情况下,PriorityBlockingQueue<FIFOEntry<JobSet>>
会期望poll()
返回FIFOEntry<JobSet>
。