**자바의 정석(남궁성 저)를 읽고 정리한 글입니다.
제네릭스
제네릭스는 다양한 타입의 객체들을 다루는 메소드나 클래스에 컴파일 시 타입 체크를 해주는 기능
장점
의도하지 않는 타입이 저장되고, 꺼내지는 것을 방지하여 항변환 오류가 줄어듦 -> 타입 안정성 제공
타입체크와 형변환을 생략할 수 있어 코드가 간결해짐
제네릭 타입
제네릭 타입은 <T>, <K>, <V> 등으로 사용되며 클래스와 메소드에 선언할 수 있음
<T>, <K> ... 등 모두 기호의 종류만 다른 것이며, T, K 각각은 임의의 참조형 타입을 의미함
제네릭의 용어
class Hello<T> {} 를 예시로 들면
Hello<T>는 제네릭 클래스, T는 타입 변수, Hello는 원시 타입임
Box<String> b = new Box<String>에서
<T>가 <String>이 되면서 String이 대입된 타입이 되었음
와일드카드
단순히 <T> 처럼만 나타내지 않고 와일드카드를 이용해서 상한과 하한을 제한할 수 있음
<? extends T> T와 그 자손들만 가능
<? super T> T와 그 조상들만 가능
<?> 모든 타입이 가능. <? extends Object> 와 동일
제네릭 타입의 제거
컴파일된 파일에는 제네릭 타입 정보가 없는데, 이는 소스코드를 체크하여 필요한 곳에 형변환을 넣어주기 때문
원시 타입을 사용한 이전 소스코드와의 호환성을 위한 것
1. 제네릭 타입의 경계 제거 (ex. 제네릭 타입이 <T extends Fruit>면 <Fruit>로 치환
2. 제네릭 타입 제거 후 타입이 일치하지 않으면 명시적으로 형변환시킴
열거형
서로 관련된 상수를 편리하게 선언하기 위해 사용
어노테이션
마치 주석처럼 프로그래밍 언어에 영향을 미치지 않으면서 프로그램에게 유용한 정보를 제공하기 위한 기능
(ex. @Override 자체는 동작 상의 기능보다는 컴파일 시에 오버라이드 한 메소드가 있는지 체크할 수 있도록 정보를 제공하는 역할)
'한권떼기 > 자바의 정석' 카테고리의 다른 글
[한권떼기] 자바의정석 챕터11. 컬렉션 프레임워크 (0) | 2022.03.27 |
---|---|
[한권떼기] 자바의정석 챕터07. 객체지향프로그래밍 심화개념 (0) | 2022.03.25 |
[한권떼기] 자바의정석 챕터06. 객체지향프로그래밍 기본개념 (0) | 2022.03.24 |
[한권떼기] 자바의정석 챕터05. 배열(Array) (0) | 2022.03.23 |
[한권떼기] 자바의정석 챕터02. 변수(Variable) (0) | 2022.03.22 |