Java Generics チュートリアルを読んでください。山かっこの間は型パラメーターです。Comparable はジェネリック クラスです。この場合、山かっこはクラスが他の BigInteger と比較可能であることを意味します。
この場合のもう少し明確にするために、Comparable in 1.5 の Javadoc を見てください。として宣言されていることComparable<T>
、およびcompareTo
メソッドが型の引数を取ることに注意してくださいT
。T は、インターフェイスの使用時に「入力」される型パラメーターです。したがって、この場合、実装を宣言することComparable<BigInteger>
は、メソッドが必要であることを意味しますcompareTo(BigInteger o)
。別のクラスは、メソッドComparable<String>
を実装する必要があるという意味を実装する場合がありcompareTo(String o)
ます。
うまくいけば、上記のスニペットからの利点を確認できます。1.4 では、すべての種類のクラスが Comparable を実装しており、必要なものを正確に知る方法がなかったため、 の署名はcompareTo
のみを取ることができました。Object
ただし、ジェネリックを使用すると、特定のクラスに関して比較可能であることを指定してから、そのクラスのみをパラメーターとして受け取る、より具体的な compareTo メソッドを作成できます。
ここでの利点は 2 つあります。instanceof
まず、メソッドの実装でチェックとキャストを行う必要はありません。次に、コンパイラはコンパイル時にさらに多くの型チェックを実行できますComparable<BigInteger>
。型が一致しないため、 String を を実装するものに誤って渡すことはできません。非汎用コードで一般的に発生するような実行時例外を発生させるよりも、コンパイラがこれを指摘できる方がはるかに優れています。