자바 제네릭(Java Generic)

jj J·2022년 10월 17일
0

JAVA

목록 보기
1/15

자바의 신 2권 제네릭 챕터를 공부하던 중 간만에 너무도 이해가 잘 안가는 느낌을 받아 해당 내용을 정리하면서 이해해보려한다.

제네릭이란?

컴파일 시 자료형을 제한하고, 검사해주는 도구

제네릭 클래스

객체 생성 시 사용 될 객체의 자료형을 제한

와일드카드

메소드에 사용 될 매개변수가 제네릭 클래스를 구현한 객체일 때, 그 제네릭 클래스 타입 변수를 제한

와일드 카드 사용법

하나의 메소드를 만드는 과정 중에 제네릭 클래스의 객체를 매개변수로 받는다고 가정한다.
public void myMethod(ArrayList list) {...}

이 메소드는 ArrayList를 매개변수로 받고 있지만, ArrayList가 담고 있는 타입 변수는 Number를 상속받은 객체들이어야 정상적으로 작동하도록 설계되었다.
하지만 ArrayList가 어떤 타입 변수를 가지고 있던지 간에 모두 받아들일 가능성이 있다.

이런 경우에 와일드카드를 사용해서 ArrayList의 타입 변수를 지정할 수 있다.
public void myMethod(ArrayList<? extends Number> list) {...}

메소드가 받아들일 매개변수 ArrayList의 타입 변수는 Number 클래스와 Number 클래스를 상속받은 클래스들의 객체들만 받는다!라고 명시한 것이다.

와일드 카드<?>의 종류

  • <? extends T> 와일드 카드의 상한 제한(upper bound) - T와 그 자손들을 구현한 객체들만 매개변수로 가능
  • <? super T> 와일드 카드의 하한 제한(lower bound) - T와 그 조상들을 구현한 객체들만 매개변수로 가능
  • <?> 제한 없음
profile
매일 발전

0개의 댓글