有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java的“可比性”比表面上的精确多少?

Comparable接口看起来像

interface Comparable<T>
{
  public int compareTo(T other);
...
}

这并没有从本质上说明Comparable<T>的实现与类型T之间的关系。Java规范的文本似乎建议Comparable<T>的实现应该始终是T的子类,但据我所知,它没有明确说明这一点。应该是吗?此外,如果{}的实现{}是{}的严格的子类,那么反对称规则似乎表明{}对于{}的某些超类{},必须是{}的实现。这是一项相当严格的要求。事实上,这已经足够严格了,除非这两个类是专门为这个目的而构建的,否则我认为通常不可能做到这一点。有什么想法吗?是我遗漏了什么,还是这个界面很奇怪


共 (1) 个答案

  1. # 1 楼答案

    这个接口早在泛型被引入之前就存在了,最初看起来像

    public int compareTo(Object other);

    这仍然是编译成字节码后的样子。随着泛型的增加,这个接口被修改以提供一些基本的类型安全性

    如果我没弄错你的问题,你是在问“是什么阻止了我这么做?”

    class SomeClass implements Comparable<SomeUnrelatedClass>

    没什么。当compareTo方法处理对象时,您必须考虑compareTo对哪些类型有用,而更新后的接口仍然如此