可比接口的java抽象继承形式
我理解如何使用Comparable<T>
接口,但是在这个特定的示例中,我想知道是否有一种方法可以要求从抽象类(实现Comparable<T>
接口)继承类与自身相比较
让我重申一下,有一个抽象类实现了可比较的接口:
public abstract class MyAbstractClass implements Comparable<MyAbstractClass>
以及从该抽象类继承的类:
public class MyClass extends MyAbstractClass
通常,使用此设置时,需要以下方法来满足可比接口:
public int compareTo(MyAbstractClass otherAbstractObject)
这需要我进行以下转换:
public int compareTo(MyAbstractClass otherAbstractObject)
{
MyClass otherObject = (MyClass) otherAbstractObject;
// Comparison...
return result;
}
由于尝试使用MyAbstractClass
的不同子级很容易导致此强制转换失败,因此我希望能够定义我的抽象类以接受以下方法:
public int compareTo(MyClass otherMyObject)
{
// Comparison...
return result;
}
以及如何实现这一目标的想法?还是根本不可能
# 1 楼答案
您可以使用泛型定义
MyAbstractClass
,如下所示:然后可以定义子类,例如
它允许您像这样定义
compareTo
方法:但是,这并不妨碍任何人编写不符合模式的子类:
这也将类似地定义
compareTo
方法:注意:没有任何东西可以强制类的泛型类型参数等于定义它的类;您所能做的最好的事情就是对抽象类强制一个上界,至少强制它是某种
MyAbstractClass