
javaのジェネリックスでTとEの違いが良く分かりません。
参考書に
「E」は(Element:要素)
「T」は(Type:型)
と書いていますが、この二つの使い分けが良く分かりません。
「Eに入るのが要素なら、要素ってコレクションのオブジェクトことで…でもオブジェクトは型から作るからTで…どっちを使えばいいか分からない orz」
インターネットで調べると「T」はテンプレート?
と、こんがらがってます。プログラムに関して全くの素人で、基本的な考え方がしっかりしていないので、おかしいことを聞いてるのかもしれませんが、どなたかよろしければ回答お願いします。
No.3ベストアンサー
- 回答日時:
「T」「E」などの型パラメータ名は、コンピュータにとっては何であっても違いは有りません。
変数名などと同様です。(もちろん「for」などの予約語は使えませんが。)動作さえすれば良いのであれば、「HOGE」などでもかまいません。
例) public <HOGE> HOGE name(HOGE h) { ・・・・・ }
ですが、「HOGE」などでは書いた人の意図が分からず、プログラムが理解しづらくなります。
ですので、(未来の自分も含めた)そのプログラムを読む人が分かりやすいようなものにするのが定石です。
標準ライブラリで例を挙げると、下記の様になっています。
・ java.util.Collection<E> の場合は要素(Element)の型を指定するので「E」
・ java.util.Map<K,V> の場合はキー(Key)と値(Value)の型を指定するので「K」「V」
標準ライブラリでも、単純な概念に当てはまらない場合などは「T」としているようですが、「T」という名前は「これは型パラメータですよ」ということしか表現していません。他に適切な名前があれば、そちらにした方が良いでしょう。
ただし、ぱっと見て型パラメータである事が分かるという意味では「HOGE」などよりは良いです。
参考URL:http://www.javainthebox.net/laboratory/J2SE1.5/L …
>標準ライブラリでも、単純な概念に当てはまらない場合などは「T」としているようですが、「T」という名前は「これは型パラメータですよ」ということしか表現していません。他に適切な名前があれば、そちらにした方が良いでしょう。
そういうことだったんですね。モヤモヤがスッキリしました。教科書にもこういう風に書いていてもらいたいです。ありがとうございました。
No.2
- 回答日時:
ジェネリックスのAPIで
java.util.Comparator<T>
java.util.Enumeration<E>
java.util.Map<K,V>
といったものがありますけど、「T」「E」「K」「V」というのは単なる記号みたいなもので、どう表現してもいいのです。気にする必要はないです。
プログラムするときに
HashMap<String, Date> map = new HashMap<String, Date>();
このように具体的なクラス名に置き換えて使うのです。
回答ありがとうございます。資格試験の勉強していて「わからない所を無くさないといけない!ここはきっと重要な箇所だ」と思っていたのですが、気にする必要のないところでしたか(*´ω`*)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JSPファイルで生じるエラーをど...
-
javaのジェネリックスでTとEの...
-
Javascriptで出来ること
-
正規表現について質問です。 カ...
-
javaのソースからクラス図を作...
-
while文を使ってのアプリケーシ...
-
オブジェクト指向プログラミン...
-
vba クリップボードクリアにつ...
-
EclipseでJavaコンパイラのバー...
-
プログラミングのプの字も知り...
-
MSFormsとは何ですか?
-
IISワーカープロセスが原因でCP...
-
JAVAプログラムをWEB表示させる...
-
Webアプリケーション
-
CrystalReportsのバージョン確...
-
ウインドウズメディアプレーヤ...
-
C言語入門サイトについて
-
プラグインとパッチの違いは?
-
googleカレンダーのデータJava...
-
visual stadio 参照問題
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPファイルで生じるエラーをど...
-
正規表現について質問です。 カ...
-
javaのジェネリックスでTとEの...
-
javaでの#if 0 #endif文
-
VScodeのターミナルの文字化け...
-
サーブレットとPHPの違い
-
Pure Javaとは?
-
カレンダー
-
Javascriptで出来ること
-
Javaを徹底的に理解したい
-
Javaって何ですか?
-
C言語の種類と特徴について教え...
-
JAVAが誕生した経緯
-
javaの堅牢性とは
-
google カレンダ API java
-
ソーティングについて
-
Javaで五輪マークを描く
-
RSA暗号の実装
-
形態素解析ツール「茶筅」をJAV...
-
データベースの形式を認識でき...
おすすめ情報