Javaで下記のような記法があります。

HashMap<K,V>
ここの<〜>の記法はどういった意味の記述なのでしょうか。HashMapにおいてはキーと値の型を記述するようですが、他のクラスでもみたことあるので、普遍的な記法なのだと想像しているのですが・・
記号のためリファレンスなどでも記述個所が見つけられずに困っています。
どなたかご存知の方いましたらドキュメントの記載個所をお教えいただけますと幸いです。
お手数ですがよろしくお願いいたします。

回答の条件
  • URL必須
  • 1人5回まで
  • 登録:
  • 終了:2012/02/19 22:58:19
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154

ポイント60pt

「ジェネリックス(Generics)」と言います。
http://www.atmarkit.co.jp/fjava/rensai4/java5eclipse19/java5eclipse19_1.html

java だと、全てのクラスが元をたどると java.lang.Object から派生しているので、どのようなオブジェクトを指すような変数を定義できるのですが、そのメソッドを呼ぶときには、定義をしているインターフェースなり、クラスなりにダウンキャストしてあげる必要があります。
不適切なクラスのインスタンスを入れてしまった場合には、実行時に ClassCastException が送出されますが、これだと動かしてみるまで、間違いがあったことに気がつきません。
ジェネリックスを導入することで、コンパイルする時点で、不適切なクラスのインスタンスを代入してしまっている間違いを検出することができます。

c++ だと、テンプレートですね。

id:n_maco2

ご回答ありがとうございます!
思ってたより深いお話でビビっています・・w
しっかり読んで理解したいと思います、ありがとうございました

2012/02/19 22:57:49

その他の回答1件)

id:a-kuma3 No.1

回答回数4974ベストアンサー獲得回数2154ここでベストアンサー

ポイント60pt

「ジェネリックス(Generics)」と言います。
http://www.atmarkit.co.jp/fjava/rensai4/java5eclipse19/java5eclipse19_1.html

java だと、全てのクラスが元をたどると java.lang.Object から派生しているので、どのようなオブジェクトを指すような変数を定義できるのですが、そのメソッドを呼ぶときには、定義をしているインターフェースなり、クラスなりにダウンキャストしてあげる必要があります。
不適切なクラスのインスタンスを入れてしまった場合には、実行時に ClassCastException が送出されますが、これだと動かしてみるまで、間違いがあったことに気がつきません。
ジェネリックスを導入することで、コンパイルする時点で、不適切なクラスのインスタンスを代入してしまっている間違いを検出することができます。

c++ だと、テンプレートですね。

id:n_maco2

ご回答ありがとうございます!
思ってたより深いお話でビビっています・・w
しっかり読んで理解したいと思います、ありがとうございました

2012/02/19 22:57:49
id:nattow No.2

回答回数102ベストアンサー獲得回数27

ポイント40pt

総称型(ジェネリック・ジェネリクス)ですね。

言語仕様はこの辺を参照してください。
http://java.sun.com/docs/books/jls/third_edition/html/classes.html#8.1.2

日本語での解説は、「java 総称型」「java ジェネリック」「java generic」などで検索すればいいでしょう

一例としてはこの辺とかわかりやすくていいのでは
http://www.ne.jp/asahi/hishidama/home/tech/java/generics.html

id:n_maco2

ご回答ありがとうございます。
URLも参考になります!

2012/02/19 22:57:47

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません