Java- <T的含义扩展了Comparable <T >>?

LTH*_*LTH 37 java generics polymorphism

完整的背景是:

public class RClass<T extends Comparable<T>>
Run Code Online (Sandbox Code Playgroud)

我是否正确地说标题中的语句意味着插入到方法中的参数必须是实现Comparable OR类派生类的类的对象?

谢谢.

And*_*mas 38

这意味着type参数必须支持通过Comparable接口与其自身类型的其他实例进行比较.

Oracle教程对象排序中提供了此类的一个示例.请注意T extends Comparable<T>下面摘录中的类似模式:

public class Name implements Comparable<Name> {
   ...
   public int compareTo(Name n) { ... }
}
Run Code Online (Sandbox Code Playgroud)

  • @committedandroider因为Comparable是您需要指定类型的通用接口 (11认同)
  • 为什么不让Name实现Comparable?为什么需要再次指定类名? (6认同)
  • 这是一个很好的答案。但是,在有界的泛型类型中,这很有趣,Java不会在接口实现和类继承之间进行区分-“ &lt;T实现Comparable &lt;T &gt;&gt;”是不合法的。 (2认同)
  • 如果“Comparable”是一个接口,为什么这里允许扩展?不应该是“工具”吗?您无法扩展接口。 (2认同)

小智 10

Java-意思是 <T extends Comparable<T>>什么?

a)Comparable <T> 是一个通用接口(记住它是一个"接口",即不是"类")

b)extends表示从类或接口继承.

从上述点#a开始,它是一个接口..(记住它是来自"接口"的继承,即不是来自"类")

c)从上面说的两个点#a和#b,

这里"一个界面"扩展了"另一个界面".

应该为这个类定义一个接口..这里只是一个例子

interface MinMax<T extends Comparable<T>> { 
    T min(); 
    T max(); 
} 
Run Code Online (Sandbox Code Playgroud)

d)现在你的班级即public class RClass {}应该

1#EITHER"实现"这个"通用接口" Comparable<T>.. !!!

例如: public class RClass<T> implements Comparable<T>

2#或创建一个接口并扩展到这个"通用接口" Comparable<T> ex:

interface MinMax<T extends Comparable<T>> { 
   T min(); 
   T max(); 
} 
class RClass<T extends Comparable<T>> implements MinMax<T> {
    .....
    .....
}
Run Code Online (Sandbox Code Playgroud)

在这里,要特别注意RClass声明类型参数T然后传递给它的方式MinMax.因为MinMax需要实现的类型Comparable,所以实现类(在本例中为RClass)必须指定相同的边界.此外,一旦建立了此绑定,就不需要在implements子句中再次指定它.


jfo*_*erg 5

在该类的某个地方,程序员需要编写类似

if(t.compareTo(othert) < 0) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

为此,类型T必须具有一个compareTo-method,该方法将它与类型T的另一个对象进行比较。