如果我父类实现了Comparable<Father>接口,子类实现了Comparable<Son>接口,为什么就报错了?如果我想这么实现有什么办法么?

解决方案 »

  1.   


    难道只能在子类的compareTo方法里用instanceof判断,然后不是Son就抛出异常了?
      

  2.   

    问题是这样的。其实泛型Comparable<Father>,Comparable<Son>只是编译期间的。虚拟机在跑的时候,只有Comparable子类继承父类的时候,同时继承了父类的接口,也就是说,子类也实现了Comparable而你自己又想再一次实现Comparable<Son>相当于一个类,实现了两次接口。所以语法上不行。但是你这个需求是可以解决的。你可以在子类中重写compareTo()这个方法。这样你子类也可以进行比较了。
      

  3.   


    也就是说,只能在子类的compareTo方法里用instanceof判断是不是Son类型的,然后不是Son就抛出异常了?