我想要定义一个实现Comparable的抽象类。当我定义,定义如下类:Java抽象类使用泛型实现接口
public abstract class MyClass implements Comparable <MyClass>
子类必须实现compareTo(MyClass object)
。相反,我希望每个子类都实现compareTo(SubClass object)
,接受它自己类型的对象。当我尝试用类似的方式定义抽象类时:
public abstract class MyClass implements Comparable <? extends MyClass>
它抱怨说“超类型不能指定任何通配符”。
有没有解决方案?
我认为就是这样。 – Pointy 2010-08-29 00:04:25
考虑(1)class MyImpl1 extends MyClass {...};和(2)MyImpl2类扩展MyClass {public int compareTo(MyImpl1 o){...}}。 MyImpl2没有做正确的事情。 –
emory
2010-08-29 00:41:42
如果我们假设每个子类都使用自己的类作为泛型参数来扩展MyClass,那么解决方案是正确的。但是,埃默里指出,似乎没有办法确保这一点。 – Cem 2010-08-29 08:46:09