知っていると便利な章
4.12. 原型を使用しない
『目的』
Java5からは文法レベルの機能としてジェネリクスが導入されています。 ジェネリクスを使用して、コンパイル時に型安全性を確保できるようにしましょう。
『Before』
原型を使用したリスト操作
以下の例では原型のList型を使用しています。
この場合、リストにどのような型の値でも入れられてしまい、リストから値を取り出すときに型安全性が壊れてしまう可能性があります。
List l = new LinkedList();
// なんでも入れられてしまう...
l.add("あ");
l.add(123);
printAllRaw(l);
// Stringのみを保持したいのに、なにが入っているかわからない...
String s = (String)l.get(0);
private void printAllRaw(List list) {
// 要素はObject型としてしか取得できない。
for (Object e : list) {
System.out.println(e);
}
list.add("789");
}
javacのオプションとして-Xlintを指定すると原型の使用が警告として扱われるため、必要に応じて付加するといいでしょう。
『After』
ジェネリクスを使用したリスト操作
以下の例ではList
この場合、リストにはInteger型の値しか入れられず、リストから値を取り出すときにも型安全性が保たれます。 また、キャストも必要ないため、コードの見通しが良くなります。
List<Integer> l = new LinkedList<>();
l.add(123);
l.add(456);
// l.add("あ"); コンパイルエラー!
printAllInteger(l);
Integer i = l.get(0);
private void printAllInteger(List<Integer> list) {
// 要素はInteger型としてしか取得できる。
for (Integer e : list) {
System.out.println(e);
}
list.add(789);
// 異なる型は追加不可能。コンパイルエラー!
// list.add("789");
}
< 前のページへ
次のページへ > -
IS 559680 / ISO27001
認証範囲 本社情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社品質方針







