1

我正在尝试定义一个接口,以便所有实现类必须与它们自己及其子类可比较。

例如,考虑:

public interface Rating implements Comparable<Rating> {}

这意味着实现类必须与所有评级可比:

public class A implements Rating {
    public int compareTo(Rating r) {return 0;}
}

我想放宽这个要求,以便我可以定义一个类,如:

public class A implements Rating {
    public int compareTo(A a) {return 0;}
}
4

2 回答 2

1

我希望你正在尝试这样的事情:

public class Rating implements Comparable<? extends Rating> {
   ...
}

或者也许(虽然我不确定你能做到这一点):

public interface Rating extends Comparable<? extends Rating> {
   ...
}

有关有界通配符的更多信息,请参阅Oracle 的此页面。

于 2011-11-28T23:24:45.660 回答
-1
  1. 我想你可能希望你的“compareTo()”返回除“0”之外的东西;)

  2. 您可以使用“instanceof”来查看任意对象是否是某个特定类(或子类)

  3. 我不确定重载“compareTo()”是否一定是个好主意。您甚至可能希望将输入参数设为“Object o”。

恕我直言.. pSM

于 2011-11-28T23:19:34.093 回答