public abstract class MyAbs implements Comparable<MyAbs>
这将起作用,但是如果它们都扩展MyAb,那么我将能够将A类和B类彼此进行比较。我要完成的却是完全相反的。
那么,有人知道将泛型类型变成自己的类的方法吗?起初似乎很简单……
编辑:
用一个例子进一步解释它。假设您有一个抽象类的动物,然后将其与“狗和蚂蚁”一起使用。
我不想将蚂蚁与狗进行比较,但是我想将一只狗与另一只狗进行比较。狗可能有一个变量,说明它是什么颜色,这就是我要在compareTo方法中使用的颜色。但是,当涉及到蚂蚁时,我宁愿要比较蚂蚁的大小而不是它们的颜色。
希望能清除它。但是可能是设计缺陷。
最佳答案
最直接的是:
public abstract class MyAbs<T> implements Comparable<T>
也许更有用的是使用
Enum
样式:public abstract class MyAbs<THIS extends MyAbs<THIS>> implements Comparable<THIS>
您可能可以忽略该问题:
public abstract class MyAbs
外部
Comparator
对我来说更自然(也就是说,没有自然顺序)。