CODEDRAGON ㆍDevelopment/Java
일반화(Generalization)
특수한 개념으로부터 공통된 개념을 찾아 묶는 것을 의미합니다.
일반화 프로그래밍(Generic Programming)
· 일반화 프로그래밍은 일반화(generalization)를 이용하는 프로그래밍 기법
· 데이터 형식(Data Type) 일반화(generalize)를 이용하는 프로그래밍 패러다임
♣제네릭(Generics)
· JDK 1.5부터 도입된 기능입니다.
· 제네릭은 클래스를 정의 할 때는 데이터 타입을 확정하지 않고 인스턴스를 생성할 때 데이터 타입을 지정하는 방법을 의미합니다.
· Generics는 컬렉션(자료구조) 또는 객체들을 저장(수집)하는 구조적인 성격을 제공합니다.
· 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미
· 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 나중에 인스턴스를 생성할 때(컴파일 할 때) 확정하는 것
· 제네릭은 코드를 간결하게 작성할 수 있는 기능이므로 꼭 기억해 두시기 바랍니다.
제네릭 예
컵이라는 특정 객체가 있습니다.
컵에는 마실 수 있는 음료수를 담을 수 있습니다.
컵은 물만 담을 수 있는 물컵, 또는 이 컵은 우유만 담을 수 있는 우유컵이라고 해서 이렇게 상징적으로 만든 것이 바로 Generics입니다.
class Cup<T>{} |
Cup<물> watercup = new Cup<물>(); |
Cup<우유> milkcup = new Cup<우유>(); |
Cup<소주> sojucup = new Cup<소주>(); |
제네릭의 필요성
· JDK5.0에 와서 Generics가 포함되면서 특정 컬렉션(자료구조)에 원하는 객체 타입을 명시하여 실행하기 전에 컴파일단계에서 지정된 객체가 아니면 절대 저장이 불가능하게 할 수 있습니다.
· 이전 버전까지는 반드시 실행하여 컬렉션(자료구조)에 있는 자원들을 하나씩 검출하여 확인할 수 밖에 없었습니다.
· Object로부터 상속받은 객체는 모두 저장이 가능했던 이전의 버전들과는 달리 제네릭을 사용하면 보다 체계적으로 저장 할 수 있습니다.
· 실행 시 자원 검출을 하게 되면 별도의 형 변환(Casting)이 필요 없이 <>사이에 선언하였던 객체자료형으로 검출되어 편리합니다.
· 제네릭을 이용하면 템플릿 형태의 클래스를 제작할 수 있어 코드가 간결해지고 일관성 있는 코드를 작성할 수 있습니다.
· 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있습니다.
· 반환값에 대한 타입 변환 및 타입 검사에 들어가는 노력을 줄일 수 있습니다.
· 제네릭은 자바의 고급 프로그래밍을 위해 중요한 문법입니다.
제네릭화의 이점
· 컴파일 단계에서 오류가 검출됩니다. (인스턴스 생성시 결정된 T의 자료형에 일치하지 않으면 컴파일 에러가 발생 하므로 자료형에 안전합니다.)
· 중복의 제거와 타입 안전성을 동시에 추구할 수 있게 됩니다.
'Development > Java' 카테고리의 다른 글
Collection Interface, Collection Interface 주요 메소드 (0) | 2017.10.12 |
---|---|
제네릭 제한, 제네릭의 제한(class) 형식 (0) | 2017.10.12 |
finally의 필요성, finally 구성 형식, finally안에서의 예외, finally 블럭 (0) | 2017.10.11 |
throw 예외의 인위적인 발생, 예외를 강제로 발생 활용, throws 예외처리시 이점 (0) | 2017.10.11 |
throws - throws예약어, throws 사용법, throws 예약어를 통한 메서드 선언 (0) | 2017.10.11 |