자바 언어에 타입 파라미터라는 개념을 도입한 것이 제네릭스(Generics)이다.
인터페이스나 메서드에서 처리할 타입을 사용하는 쪽에서 지정할 수 있다.
가장 쉬운 예로 List 인터페이스는 제네릭스 기반으로 작성되었다.
List
booelan add(E e);
E get(int index);
List<Integer> list;
혹은 List<String> list;
등 사용하는 쪽에서 지정하는 것이다.
제네릭스가 없다면 여러 타입을 담으려면 결국 모든 클래스의 조상인 Object로 지정해야 했을 것이다.
List
boolean add(Object object);
Object get(int index);
이렇게 하면 발생하는 문제는 다음과 같다.
-
형변환
매번 사용할 때마다 형변환을 해줘야 한다.Integer 타입을 예로 들면,
Integer value = 4; add((Object) value); (Integer) ret = get(1);
-
타입 체크가 안됨
Integer 리스트를 만들었는데 모르고 Long을 넣어도 알 수가 없다.Long value = 4L; add((Object) value);
이러한 이유로 제네릭스를 이용하는 것이 좋다.
참고자료
토비의 스프링 3.1, 이일민
'개발 > Java' 카테고리의 다른 글
[Java] Primitive Type, Wrapper Class (0) | 2020.03.07 |
---|---|
[Java] private vs protected (0) | 2020.02.17 |
[Java] 불변(Immutable) 속성 (0) | 2020.02.04 |
[Java] 자바 네티이브 인터페이스(JNI) (0) | 2020.02.01 |
[JVM] 런타임 데이터 영역(Run-time Data Area) (0) | 2020.02.01 |