在 Java 中的泛型中实现与扩展

2022-09-03 15:01:08

有人能告诉我第一个和第二个代码之间的区别是什么吗?MaxPQ代表优先级队列,它是可以相互比较的“Key”对象的集合。

代码 1:

public class MaxPQ<Key extends Comparable<Key>>{
...
}

代码 2:

public class MaxPQ<Key implements Comparable<Key>>{
...
}

第二个代码无法编译,但对我来说,为什么在使用泛型时我们需要扩展而不是实现接口并不直观。


答案 1

区别非常简单:第二个代码片段不会编译,也永远不会编译。对于泛型,您始终对类和接口都使用 。关键字也可以在那里使用,但它具有不同的语义。extendssuper


答案 2

泛型中没有实现。第二个代码无效。您可能会混淆:

public class MaxPQ implements Comparable<Key> {
   ...
}