我的IDE发出了奇怪的警告,但是代码仍然可以正常运行。
该代码是
class TaskQueue<T extends Comparable> {
private final PriorityQueue<QueueItem<T>> queue =
new PriorityQueue<>(Comparator.comparing(QueueItem::getDeadline));
}
IDE给我一个警告和一个错误:
警告
Unchecked call to 'PriorityQueue(Comparator<? super E>)' as a member of raw type 'java.util.PriorityQueue'
引用
QueueItem::getDeadline
时出错Non-static method cannot be referenced from a static context
我是Java的新手,虽然代码可以正常工作,但我想知道是否可以用更好的方式编写它,或者是否有适当的方法。
谢谢
编辑
QueueItem
的代码class QueueItem<T extends Comparable>{
private final T deadline;
QueueItem(T deadline) {
this.deadline = deadline;
}
T getDeadline() {
return deadline;
}
}
最佳答案
QueueItem
看起来应该不一样(TaskQueue也一样):
QueueItem<T extends Comparable<T>>
注意
T extends Comparable<T>
Comparable是一种通用类型,但是在您的代码中,您没有指定该
Comparable
的类型。相反,它是原始的。