質問

Java 1.4.2, 、 クラス java.math.BigInteger インターフェースを実装します Comparable, Serializable.

Java 1.5.0, 、 クラス java.math.BigInteger インターフェースを実装します Serializable, Comparable<BigInteger>.

これは、質問するための単なる一例です < そして >. 。本当に気になるのは、 < そして > もの。

私の質問は 3 つあります。

  • は何ですか <BigInteger> の一部 implements 発言の意味は?
  • その構文は何と呼ばれますか?
  • そしてそれは何をするのですか?

追記:グーグルで探すのは本当に難しい < そして > SOを検索することは不可能です < そして > そもそも。

ありがとう!

役に立ちましたか?

解決

読む Java ジェネリックのチュートリアル. 。山括弧で囲まれたものは型パラメータです。Comparable はジェネリック クラスであり、この場合山括弧はクラスが他の BigInteger と比較できることを意味します。

この場合についてもう少し詳しく説明するには、以下を参照してください。 比較可能な Javadoc 1.5で。次のように宣言されていることに注意してください Comparable<T>, 、そしてそれは compareTo メソッドは次の型の引数を取ります T. 。T は、インターフェイスの使用時に「埋められる」型パラメータです。したがって、この場合、実装を宣言すると、 Comparable<BigInteger> が必要であることを意味します compareTo(BigInteger o) 方法。別のクラスが実装する可能性があります Comparable<String> つまり、 compareTo(String o) 方法。

上記のスニペットから利点がわかると幸いです。1.4 では、 compareTo しか取ることができませんでした Object なぜなら、あらゆる種類のクラスが Comparable を実装していて、何が必要なのかを正確に知る方法がなかったからです。ただし、ジェネリックを使用すると、特定のクラスに関して比較可能であることを指定して、そのクラスのみをパラメーターとして受け取る、より具体的な CompareTo メソッドを作成できます。

ここでの利点は 2 つあります。まず、次のことを行う必要はありません。 instanceof メソッドの実装でチェックとキャストを行います。次に、コンパイラはコンパイル時にさらに多くの型チェックを行うことができます。誤って String を実装するものに渡すことができません。 Comparable<BigInteger>, タイプが一致しないため。非汎用コードで一般的に発生する実行時例外を引き起こすよりも、コンパイラーがこれを指摘できる方がはるかに優れています。

他のヒント

ジェネリックだと確信しています

http://java.sun.com/j2se/1.5.0/docs/guide/ language/generics.html

私は同様のことを尋ねました(C#)、そこに役立つ情報があります Method<ClassName> とはどういう意味ですか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top