
No.1ベストアンサー
- 回答日時:
j2SE 5.0 から導入された、Genericsと呼ばれるものです。
以下のサイトが参考になります。
http://www.itarchitect.jp/technology_and_program …
http://www.objectclub.jp/technicaldoc/java/java_ …
簡単に言うと、「型E用のIteratorですよ」ということを明示的にJavaコンパイラに知らせる記述になります。
例えば、何がうれしいかというと
1. 要素取り出す際にはキャストが必要.
2. 意図しない型の要素も追加できてしまう.
というCollection系の問題を解決することが出来ます
Genericsを使わない以下のコードで、
List list = new ArrayList() ;
list.add(new Employee(1));
list.add(new Employee(2));
list.add(new Employee(3));
for(Iterator i = list.iterator(); it.has.Next(); ){
Employee employee = (Employee)i.next();
}
listに入れているのはEmployeeオブジェクトであることは明確なのに、要素を取り出す際にいちいち(Employee)でキャストを行わなければいけず、もし誤って違う型でキャストするような記述をしてしまっても実行時のCast関係の例外が発生するまでわかりません。
一方でGenericsを使うと、
List<Employee> list = new ArrayList<Employee>() ;
list.add(new Employee(1));
list.add(new Employee(2));
list.add(new Employee(3));
for(Iterator<Employee> i = list.iterator(); it.has.Next(); ){
Employee employee = i.next();
}
となります。
まず、iをIterator<Employee>部分で「Employee用のIteratorだよ」ということを宣言しているので、i.next()の部分でキャストする必要がありません。
また、List<Employee> listと宣言しているので、仮に誤ってEmployee以外のオブジェクトをlistに追加しようとしてもコンパイル時に検出することが出来ます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
パワーポイントのVBAでテキスト...
-
ResultSet での問題
-
Excelで =EMBED("Acrobat Docu...
-
ADO オブジェクトの渡し方
-
C#でフォームのオブジェクト名...
-
Accessの連結・非連結オブジェ...
-
JAVAからHTMLへ値を返す方法
-
Javaの問題なんですが、(this==...
-
ワードで画像をドロップすると...
-
newは明示的にした方が良いのか?
-
PowerPointの図について
-
時間帯判定をする。
-
VB6.0(SP6)からActiveXDLLをコ...
-
vb.net オブジェクト指向につい...
-
printerオブジェクトでのテキス...
-
ワイルドカード<?>と型パラメー...
-
オブジェクトに値を保持させる...
-
CoCreateInstanceでエラーになる。
-
JavaScriptとjQueryのbindの違い
-
VBAのWindowオブジェクトとWork...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで =EMBED("Acrobat Docu...
-
VBA 同じ名前のオブジェクトを...
-
EXCEL VBAにて動的にCheckBOXを...
-
パワーポイントのVBAでテキスト...
-
C#でフォームのオブジェクト名...
-
VBAのWindowオブジェクトとWork...
-
Object型からDouble型へのキャスト
-
時間帯判定をする。
-
C++で*thisは何を指しているの...
-
ワイルドカード<?>と型パラメー...
-
Accessの連結・非連結オブジェ...
-
COMコンポーネントって何?
-
newは明示的にした方が良いのか?
-
ビジュアルC++でボタンの有...
-
CoCreateInstanceでエラーになる。
-
ResultSet での問題
-
多人数のじゃんけんプログラム
-
printerオブジェクトでのテキス...
-
サーブレットのクラス図について。
-
VBSでのステートメントの末尾が...
おすすめ情報