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); // キャストの必要なし・コード量減る
    // 処理
}
  1. for(Emp emp : emps) { // 拡張forループ使えばもっとコード量減る
  2. // 処理
  3. }

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になるかどうかは実行時までわからない
    // 処理
}
  1. Object obj = emps.get(i);
  2. if(obj instanceof Emp) { // なのでこんな感じでチェックする必要があり・ロジック増える
  3. Emp emp = (Emp) obj;
  4. // 処理
  5. }
see also: Javaプログラマであるかを見分ける10の質問 3.List<Integer>のようにジェネリクス型を使う主たる目的は何か

0 件のコメント:

コメントを投稿