ArrayList list = new ArrayList();
list.add(10);
list.add(20);
list.add("30"); // String을 추가
Integer i = (Integer)list.get(2); // 컴파일 ok
위 코드를 실행해보면 java.lang.ClassCastException 에러를 발생시키는데 이는 컴파일 단계에서 에러를 찾지 못하고 실행 단계에서 문제를 찾는다는 것이다.
위처럼 지네릭스를 사용하게 되면 타입체크가 강화되어 개발할 때 큰 도움을 준다.
public class ArrayList extends AbstractList{
private transient Object[] elementData;
public boolean add(Object o){ }
public Object get(int index){ }
}
public class ArrayList<E> extends AbstractList<E> {
private transient E[] elementData;
public boolean add(E o){ }
public E get(int index){ }
}
보통 타입변수의 이름은 (보통)T, E와 같은 대문자 한글자로 쓴다.
ArrayList tvList = new ArrayList();
tvList.add(new TV());
TV t = (TV)tvList.get(0);
ArrayList<TV> tvList = new ArrayList<TV>();
tvList.add(new TV());
TV t = tvList.get(0); // 형변환 불필요