簡単に言えば、コンパイル時にタイプ・セーフなコレクションが作成できるようにしてくれるものです。ようにコレクションを作成して項目を追加していました。JButton("Four"));コレクションから要素を取得するには、コレクション内のオブジェクトの型を把握する必要がありました。ないと、要素をキャストして適切なローカル変数に戻せないからです。(JButton)buttonList.get(0);キャストして正しい型に戻す必要はなくても、特定のクラス型で何らかの操作を行う必要があるだろうという前提で要素のキャストは行われていました。このやり方が上手くいくのは、以下のように不正な型のオブジェクトを誤ってコレクションに追加してしまうまでの話です。して取得しようとすると、実行時にクラス・キャスト例外が発生します。コレクションに追加すること自体は間違っていません。この例外は実行時まで発生しません。十分にテストを行っていなければ、アプリケーションがデプロイされるまで例外が発生しないという事態もあり得ます。開発サイクルの早い段階でコードの問題を解決できるようにします。追加しようとしたとします。するとコンパイラーが不一致を検出し、コンパイル時に警告を出します。誤った型の要素を追加しようとすると、コンパイル時にエラー・メッセージを生成します。呼び出すところでエラーになっていることがわかります。追加しようとしていることが示されています。追加しようとすべきではなかったのかを判断する必要に迫られます。注目すべきことは、コレクションから項目を取得する際に正しい型にキャストしなくてもコレクションから項目を取得できるという点です。コレクションが特定の型として記述されているので、そのコレクションから項目を取得するためのすべての呼び出しは、その特定の型を返します。使用するとコード・ベースの管理が遥かに容易になります。この管理の容易さが特に明らかになるのは、コード・ベースが大きくなったためにコード要素を再利用可能なライブラリーに変換する場合です。ライブラリーのユーザーがコレクションに含まれるオブジェクトの型に制約があるのかどうかを心配する必要はもうありません。適切に定義されたメソッドが、その定義によって該当する型を組み込むからです。その型から逸脱したとしても、コンパイラーが警告を出してくれます。コードでの場合と同じように警告を出します。以下の行が含まれるクラスをコンパイルするとします。LinkedList();すると、コンパイラーは以下の警告を出します。details.この警告は無視して構いません。誤って正しくないデータ型をコレクションに追加することがなければ、すべて問題なく運びます。コマンドをコンパイラーに渡してください。ような出力が表示されます。データ型が定義されていないことではありません。呼び出すたびに問題が発生するということです。この場合も警告なので無視して構いませんが、コレクションを修正して型を明示的に指定すれば、コンパイル時に発生した本当のエラーをこれらの警告に紛れて見落としてしまう可能性は低くなります。使用しているライブラリーを変更できない場合、あるいは変更したくない場合には、コンパイラーからの警告を抑制するという方法があります。アノテーションはコンパイラーに対し、コードが警告を生成することはわかっているため、警告の表示は不要であると指示します。出ても無視する対象のメソッドの直前に以下の行を記述しておくと、コンパイラーはそのメソッドに関する警告を出さなくなります。@SuppressWarnings("unchecked")これで、クラスをコンパイルしたときに警告メッセージもエラー・メッセージも表示されなくなります。発生するリスクがあることには変わりありません。この方法を使うかどうかは、その人次第です。ページ上のリンクをすべて収集するプログラムを作成してみます。ページを読み込んでコンテンツを解析するプログラムを自力で作成できるとは思いますが、その必要はありません。コンポーネント・ライブラリーに用意されているからです。属性を要求することのみとなります。ページが解析されます。属性を取得するように指示することができます。形式のタグだけを収集することにします。コンテンツに渡すことのみです。ストリングを付けなければなりません。受け取ることになります。複雑そうに聞こえるプロセスですが、そんなことはまったくありません。メソッドに渡されます。Document、そして読み出しの開始位置です。