【发布时间】:2010-03-17 05:58:55
【问题描述】:
public abstract class MyAbs implements Comparable<MyAbs>
这可行,但如果 A 类和 B 类都扩展 MyAbs,我将能够相互比较它们。然而,我想要完成的却恰恰相反。
那么有没有人知道如何让泛型类型成为自己的类?乍一看好像很简单的事情……
编辑:
用一个例子进一步解释一下。假设你有一个抽象类动物,然后你用狗和蚂蚁扩展它。
我不想将蚂蚁与狗进行比较,但我想将一只狗与另一只狗进行比较。狗可能有一个变量来说明它是什么颜色,这就是我想在 compareTo 方法中使用的颜色。然而,当谈到蚂蚁时,我更愿意比较蚂蚁的大小而不是它们的颜色。
希望能解决这个问题。然而,这可能是一个设计缺陷。
【问题讨论】:
-
如果 A 和 B 都是 MyAb,为什么您不想比较它们?如果有真正的原因,那么您的设计可能不正确,A 和/或 B 根本不应该扩展 MyAbs。
-
与“比较 A 和 B”完全相反?不比较A和B?您的意思是您的比较器不适用于子类吗?你想做什么?