泛型和Java8流的未检查调用错误
我的IDE发出了一个奇怪的警告,但代码仍然运行良好 代码是泛型和Java8流的未检查调用错误,java,generics,java-8,Java,Generics,Java 8,我的IDE发出了一个奇怪的警告,但代码仍然运行良好 代码是 class TaskQueue<T extends Comparable> { private final PriorityQueue<QueueItem<T>> queue = new PriorityQueue<>(Comparator.comparing(QueueItem::getDeadline)); } 方法QueueItem::getDai
class TaskQueue<T extends Comparable> {
private final PriorityQueue<QueueItem<T>> queue =
new PriorityQueue<>(Comparator.comparing(QueueItem::getDeadline));
}
方法
QueueItem::getDaildate
返回某种类型的对象,该对象未实现Comparable
因此,解决方案将是:
class Deadline implements Comparable<Deadline> {
@Override
public int compareTo(Deadline o) {
return 0 /* Some comparing logic here */;
}
}
课程截止日期{
@凌驾
公共国际比较(截止日期o){
这里返回0/*一些比较逻辑*/;
}
}
和
比较器。comparing
期望返回compariable
对象。该队列项目
看起来不应该有点不同(TaskQueue也是如此):
QueueItem
请注意,T扩展了可比较的
Comparable是一种泛型类型,但在代码中未指定该
Comparable
的类型;相反,它是生的 你能发布QueueItem
类的代码吗?我最好的猜测是getDeadline不是一个静态方法。将其更改为静态或使用instanceThat's!我从来没有想过这个功能。。。。但我不得不修改它以适应`
class Deadline implements Comparable<Deadline> {
@Override
public int compareTo(Deadline o) {
return 0 /* Some comparing logic here */;
}
}
QueueItem<T extends Comparable<T>>