///////
Search
🍃

Generics

목차

지네릭스란?

다양한 타입의 객체들을 다루는 메소드나 컬렉션 클래스에 컴파일 시 타입 체크를 해주는 기능

지네릭스 장점

객체의 타입 안정성을 높인다.
타입체크와 형변환의 번거로움을 줄인다.
코드가 간결해진다.

지네릭스 적용 전 vs 후

지네릭스 문법

class Box<T> { }

Bob<T> : 지네릭 클래스 (‘T의 Box’ 또는 ‘T Box’)
T : 타입 변수 또는 타입 배개변수 (T는 타입 문자)
Box : 원시 타입 (raw type)
Box<String>과 Box<Integer>은 별개의 클래스가 아니다, 단순히 서로 다른 타입을 대입해서 호출을 뿐이다. (컴파일 후, Box<String>과 Box<Integer>은 지네릭 타입이 제거되어 원시 타입인 Box로 바뀐다.)

자주 쓰이는 타입

타입
설명
<T>
Type
<E>
Element
<K>
Key
<V>
Value
<N>
Number

두 개 이상의 지네릭 타입

지네릭 타입은 여러개를 지정해 줄 수 있다.
예시

제한된 지네릭 클래스

특정 타입과 그 자손들만 대입 할 수 있게 제한하는 지네릭 클래스

제한된 지네릭 클래스 문법

class SmartTv<T extends Tv> { // TV와 그 자손만 타입으로 지정 가능 ArrayList<T> list = new ArrayList<T>(); }
Java
복사
인터페이스를 구현하는 경우에도 extends 를 사용한다.
클래스인터페이스를 동시에 상속하려면 ‘&’ 기호로 연결하여 사용한다.
코드 예시

지네릭 메소드

메소드 하나에 대해 지네릭으로 정의
Class BoxFactory { public static <T> Box<T> makeBox(T o) { Box<T> box = new Box<T>(); // box 생성 box.set(o); return box; }
Java
복사
지네릭 메소드의 T는 메소드 호출 시점에 결정한다.
예시