もっと早く使えばよかった。。。
2007.02.01 (木) 12:14
ugnag
先日JAVA6をインストールしたが、それでもコンパイルモードは1.4のままだった。
これには理由がある。
JAVAは5.0から言語仕様が大幅に拡張された。
この中には使いたい機能がいっぱいあるのだが、唯一ジェネリクスという機能だけ使いたくない。
そのためずっと1.4を使っていたのだ。
ジェネリクスというのは、汎用的な処理をするクラスに型を限定させるもの。
例えば、ArrayListという動的配列を管理するクラスがあるが
これに文字列を追加し取り出すには、
String a="abcde";
String b="123456";
ArrayList list = new ArrayList();
list.add(a);
list.add(b);
String a2 = (String)list.get(0);
String b2 = (String)list.get(1);
というようになる。
addメソッドは引数にObject型をとる。
Object型は全てのクラスのスーパークラスなので、どんなクラスもaddに指定できる。
ところが取り出す場合は、
String a2 = (String)list.get(0);
というようにString型にキャストしなければならない。
そのため、追加したときと取り出すときで型が間違える場合があった。
さて、ジェネリクスだ。
この間違いを起こさないような仕組みである。
JAVA5.0のジェネリクスを使って書くとこうなる。
String a="abcde";
String b="123456";
ArrayList<String> list = new ArrayList<String>();
list.add(a);
list.add(b);
String a2 = list.get(0);
String b2 = list.get(1);
つまり、listオブジェクトはString専用となり、他の型を追加/取得しようとするとコンパイルエラーとなる。
素晴らしい機能なのだが、<>を付けなければならない。
今までのソースを再コンパイルするとエラーだらけになるからと思い、この機能を避けるためにずっと1.4系を使っていたのだ。
ところが、今回
せっかくインストールしたし、試しに使ってみるか。
さて、どんなエラーが出るのかな?
なんて思ってやってみたら、、、、
あれ?
エラーが出ない。。。
なぜ???
[7] beginning... [9] >>
[1] comments (1)
-
[7] << WMP11
[9] GBA携帯暗号化 >>
[0] [top]