2011/03/11

Generics(ジェネリクス(総称))・Type Safe(タイプセーフ(型の安全性))

1.5以降

interface EmpService {
    List<Emp> getEmps(int deptNo);
}
List<Emp> emps = empService.getEmps(10);
for(int i = 0; i < emps.size(); i++) {
    Emp emp = emps.get(i); // キャストの必要なし・コード量減る
    // 処理
}
for(Emp emp : emps) { // 拡張forループ使えばもっとコード量減る
    // 処理
}

1.4以前

interface EmpService {
    List getEmps(int deptNo);
}
List emps = empService.getEmps(10);
for(int i = 0; i < emps.size(); i++) {
    Emp emp = (Emp) emps.get(i); // キャストが必要・ClassCastExceptionになるかどうかは実行時までわからない
    // 処理
}
Object obj = emps.get(i);
if(obj instanceof Emp) { // なのでこんな感じでチェックする必要があり・ロジック増える
    Emp emp = (Emp) obj;
    // 処理
}
see also: Javaプログラマであるかを見分ける10の質問 3.List<Integer>のようにジェネリクス型を使う主たる目的は何か

0 件のコメント :

コメントを投稿