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 に答える