다양한 타입의 객체들을 다루는 메서드나 컬렉션 클렉스에 컴파일시의 타입을 체크해주는 기능.
Arraylist list = new ArrayList()
lsit.add(10);
lsit.add(20);
lsit.add("30"); // String을 추가.
Integer i = (Integer)list.get(2); // 컴파일러가 체크, 컴파일 에러 발생.
다음코드를 실행하면 형변환 에러가 발생한다.
실행 후 에러(런타임 에러)가 나는것 보다. 컴파일시 에러를 가져오는것이 좋기 떄문에 만들어진 방법이다.
즉 컴파일러에게 더 많은 정보를 제공해준다.
Arraylist<Integer> list = new ArrayList<Integer>()
lsit.add(10); //list.add(new Integer(10));
lsit.add(20);
lsit.add("30"); // String을 추가. >컴파일러가 미리 타입에러를 감지한다.
Integer i = list.get(2) // 형변환 생략가능.
<Integer>
타입으로 지정했기 때문에 형변환이 생략이 가능하다.
<Object>
로 할경우 기존처럼 모든 객체의 타입이 가능하다.
지네릭스 타입을 사용해야하는 경우 반드시 생략하지 않고 붙여서 작성할 필요가 있다.
List list = new ArrayList();
list.add(1);
list.add("5");
list.add(0.1);
Object o1 = list.get(0);
Object o2 = list.get(1);
Object o3 = list.get(2);
Integer num = (Integer) o1;
String str = (String) o2;
Long L = (Long) o3;
제네릭을 사용할경우 List에 저장요소를 Integer로 제한하기 때문에 get(idx)할 경우 타입변환이 필요 없게 되어 프로그램 성능이 향상된다.