一部のコードを Java 5 にアップグレードしていますが、明らかに Generics について理解していません。Comparable を一度実装する他のクラスがあり、実装できました。しかし、今では、継承のために、2 つの型に対して Comparable を実装しようとするクラスを取得しました。これが私の状況です:
私は次のクラス/インターフェースを持っています:
interface Foo extends Comparable<Foo>
interface Bar extends Comparable<Bar>
abstract class BarDescription implements Bar
class FooBar extends BarDescription implements Foo
これにより、「interface Comparable を異なる引数で複数回実装することはできません...」というエラーが表示されます。
FooBar に compareTo(Foo foo) を実装し、BarDescription にも compareTo(Bar) を実装できないのはなぜですか? これは単にメソッドのオーバーロードではありませんか?
編集: BarDescription を拡張する多くのクラスがあります。BarDescription を拡張するすべてのクラスをソートするときに、Comparable on Bar の型パラメーターを削除して raw 状態のままにすると、コンパイラーの警告が大量に表示されます。これは、以下のワイルドカードの回答で解決されますか? その答えは非常に複雑で、メンテナンスのために理解するのが難しいようです。