Java 泛型 Comparable,其中子类无法相互比较

标签 java generics

public abstract class MyAbs implements Comparable<MyAbs>

这会起作用,但如果 A 类和 B 类都扩展了 MyAbs,那么我将能够相互比较它们。然而,我想要完成的恰恰相反。

那么有没有人知道让泛型类型成为自己的类的方法?乍一看似乎是一件如此简单的事情......

编辑:

再举个例子来解释一下。假设你有一个抽象类动物,然后你用狗和 Ant 扩展它。

我不想将 Ant 与狗进行比较,但我想将一只狗与另一只狗进行比较。狗可能有一个变量说明它是什么颜色,这就是我想在 compareTo 方法中使用的颜色。然而,当谈到 Ant 时,我宁愿比较 Ant 的大小而不是它们的颜色。

希望一切都过去了。然而,可能是设计缺陷。

最佳答案

最直接的是:

public abstract class MyAbs<T> implements Comparable<T>

也许更有用的是,您可以使用 Enum 样式:

public abstract class MyAbs<THIS extends MyAbs<THIS>> implements Comparable<THIS>

您或许可以忽略该问题:

public abstract class MyAbs

外部比较器对我来说感觉更自然(也就是说,没有自然顺序)。

关于Java 泛型 Comparable,其中子类无法相互比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2458252/

相关文章:

java - 使用 Moxy 和 JerseyClient2 发出通用编码问题

c# - 具有多重继承的泛型类

c# - 类型转换泛型

java - 通用方法和 JSON

javascript - 如何在不刷新/提交页面的情况下发送 POST 方法

相同屏幕分辨率下的 Java 布局差异

java - 拆分文件 w.r.t 输入文件 MapReduce

java - 无法使用 android-gif-drawable 库

c# - 动态排序函数

java - java读取文件时内容被删除