-
[Java] 제네릭(Generic) - IntroCSE/Java 2015. 9. 20. 09:21
제네릭은 여러 절로 구성되어 있습니다.
Intro
Java 5 부터 제네릭(Generic) 타입이 새로 추가되었는데, 제네릭 타입을 이용함으로써 잘못된 타입이 사용될 수 있는 문제를 컴파일 과정에서 제거할 수 있게 되었습니다.
제네릭은 컬렉션, 람다식, 스트림, NIO에서 널리 사용되므로 확실히 이해해 두어야 합니다.
API 도큐먼트를 보면 제네릭 표현이 많기 때문에 제네릭을 이해하지 못하면 API 도큐먼트를 제대로 이해할 수 없습니다.
제네릭은 클래스와 인터페이스, 그리고 메소드를 정의할 때 타입(type) 파라미터로 사용할 수 있도록 합니다.
타입 파라미터는 코드 작성 시 구체적인 타입으로 대체되어 다양한 코드를 생성하도록 해줍니다.
제네릭을 사용하는 코드는 비제네릭 코드에 비해 아래와 같은 이점을 가지고 있습니다.
컴파일 시 강한 타입 체크를 할 수 있습니다.
자바 컴파일러는 코등레서 잘못 사용된 타입 때문에 발생하는 문제점을 제거하기 위해 제네릭 코드에 대해 강한 타입 체크를 합니다.
실행 시 타입 에러가 나는 것보다는 컴파일 시에 미리 타입을 강하게 체크해서 에러를 사전에 방지하는 것이 좋습니다.
타입 변환(casting)을 제거합니다.
비제네릭 코드는 불필요한 타입 변환을 하기 때문에 프로그램 성능에 악영향을 미칩니다.
다음 코드를 보면 List에 문자열 요소를 저장했지만, 요소를 찾아올 때는 반드시 String으로 타입 변환을 해야 합니다.
123List list = new ArrayList();list.add("hello");String str = (String) list.get(0);cs 다음과 같이 제네릭 코드로 수정하면 List에 저장되는 요소를 String 타입으로 국한하기 때문에 요소를 찾아올 때 타입 변환을 할 필요가 없어 프로그램 성능이 향상됩니다.
1234List<String> list = new ArrayList<String>();list.add("hello");String str = list.get(0);cs * 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.
'CSE > Java' 카테고리의 다른 글
[Java] 제네릭(generic) - 제네릭 메소드 (0) 2015.09.20 [Java] 제네릭(generic) - 멀티 타입 파라미터 (0) 2015.09.20 [Java] 제네릭(Generic) - 제네릭 타입 (1) 2015.09.20 [Java] 컬렉션 프레임워크 - 동기화, 병렬 처리 (0) 2015.09.20 [Java] 컬렉션 프레임워크 - LIFO와 FIFO 컬렉션 (0) 2015.09.19 [Java] 컬렉션 프레임워크 - 검색 기능을 강화시킨 컬렉션 (0) 2015.09.14