Generics은 데이터 타입의 안정성을 제공한다.
모든 Collection 객체는 Object유형의 어떠한 객체라도 넣을 수 있어서, Compile시점에서 에러를 발견할 수 없으며, RunTime시점에서 에러를 발견할 수 있었다.
Generics은 이러한 객체에 넣을 타입을 한정시켜 주어, Compile시점에서 에러를 발견할 수 있다.
주로 Collection객체를 사용할 때 유용하게 쓰인다.
public class ArrayList<E> extends AbstractList<E> implements List<E>...{
public boolean add(E o)
}
import java.util.*;
public class Before_Generics{
public static void main(String[] args){
ArrayList arr = new ArrayList();
arr.add(new Integer(2));
arr.add(new String("I am String!!"));
for (int i=0; i <arr.size(); i++){
System.out.println((Integer)arr.get(i));
}
}
}
<<실행결과>> RunTime시 Error가 발생!!
import java.util.*;
public class After_Generics{
public static void main(String[] args){
ArrayList<Integer> arr = new ArrayList<Integer>();
arr.add(new Integer(2));
arr.add(new String("I am String!!"));
for (int i=0; i <arr.size(); i++){
System.out.println((Integer)arr.get(i));
}
}
}
<<실행결과>> Compile시 Error가 발생!!