10:33■総称型(Generic)について実際にコレクション関係のクラスを利用してみると、コンパイルする途中で警告が表示さて驚いた人もいるんじゃないでしょうか。これは、「コレクション関係のインスタンスにどんな値が入れられるかチェックできないから危ないぞ」という意味の警告なのです。コレクション関係のクラスは、オブジェクトであればどんなものでも入れられます。いえ、オブジェクトでなくても、入れられます。98というのは、int値であってオブジェクトではありません。boxing)」という機能のおかげです。オートボクシングというのは、基本型の値を自動的にオブジェクトにラップする機能です。int型の値をオブジェクトとして利用する必要があるとき、自動的にIntegerインスタンスに変換してくれます。この逆に、Integerインスタンスを自動的にint値に戻す機能を「アンボクシング(unboxing)」といいます。この機能により、「オブジェクトしか保管できない」というコレクションに、普通の値も保管できるようになっているのですね。どんなオブジェクトでも保管できるということは、逆にいえば「どんなオブジェクトが入っているかわからない」ということでもあります。ここではテキストや整数の値を保管するサンプルを作りましたが、そのコレクションに、必ずテキストや整数が保管されているかどうかは、わかりません。プログラムが複雑になってきたりすると、自分では気が付かないけどぜんぜん違うクラスのインスタンスを入れちゃってた、なんてこともあるかも知れません。大規模開発で大勢のプログラマが分担して作業していたりすると、そういうトラブルを起こす可能性も高まります。そこで、コレクション関係のオブジェクトに「これは、○○のインスタンスしか入れられません!」ということを設定する機能が用意されました。これが「総称型(Generic)」というものです。この総称型は、変数の宣言やインスタンス作成などの際、変数名の後に<>記号を使って、保管できるクラス名を指定します。「Stringしか入れられないArrayList」であれば、こんな具合に作成をします。ArrayList<String>();HashSetでも、同じように使うことができます。HashMapの場合には、キーと値の両方に使用する型を設定することができます。HashMap<String,Integer>();こうすると、「キーはString、値はInteger」の値しか保管することができなくなります。――では、簡単な利用例を下に挙げておきましょう。先にArrayListで作成したサンプルを、総称型で「テキストしか保管できない」ように修正したものです。ここでも、forで繰り返し値を取り出していますが、とり出すところがちょっと違っていますね。先のサンプルと、ここでの処理を比較してみましょう。list.get(i);コレクション関係のクラスでは、追加した値は一度Objectインスタンスにキャストされて保管されました。値をとり出すときは、まずObjectとして取り出したものをもとのクラスにキャストして戻さないといけなかったのです。ところが、総称型を使うと、Objectではなく、直接Stringとしてとり出すことができます。総称型では、保管可能な値の型はあらかじめ決められていますから、その種類のものしか保管できません。Objectにキャストして保管する必要がないのです。この総称型は、コレクションを利用するときの基本として頭に入れておきましょう。保管する値の内容が決まっているような場合は、常に総称型を使って記述すべきだ、と考えましょう。SYODA-Tuyano.)※プログラムリストが表示されない場合AddBlockなどの広告ブロックツールがONになっていると、プログラムリスト等が表示されない場合があります。これらのツールをOFFにしてみてください。※libroに関する情報は、libroページを御覧下さい。よるサービスを使用して広告を表示しています。アドレス、電話番号は含まれません)。