본문 바로가기
IT/Java

JAVA 제네릭(Generic) 이해하기

by eddie_factory 2021. 4. 6.
반응형

제네릭이란?

JDK 1.5에 처음 도입 데이터타입(data type)을 일반화한다(generalize)는 것을 의미합니다.
제네릭은 아래표의 타입들이 많이 사용됩니다.

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

제네릭클래스 및 인터페이스

기본적으로 제네릭 타입의 클래스나 인터페이스는 위와 같이 선언 합니다.
선언한 제네릭 클래스를 사용할 때, 객체 생성시에는 구체적인 타입을 명시해야합니다.

위와 같이 객체생성 시 제네릭클래스의 타입 T는 String, K는 Integer가 됩니다.

  • 타입 파라미터로 명시할 수 있는 것은 참조 타입(Reference Type)밖에 올 수 없음. (int, double 등 원시 타입(primitive type) 불가)
  •  

제네릭 메소드

위와 같이 ClassName란 객체를 생성할 때 타입 파라미터를 다르게 지정, a 객체는 String 타입, b 객체는 Integer 타입의 결과가 나옵니다.

 

제한된 타입 제네릭

제네릭의 타입을 제한하고 싶은 경우 extends 또는 super를 사용하여 참조된 클래스의 타입으로 제한 할 수 있습니다. '?'는 와일드카드라고 해서 '알 수 없는 타입'을 의미 합니다.

Integer, Long, Byte, Double, Float, Short 같은 래퍼 클래스들은 Number 클래스를 상속을 받습니다. 이때 제네릭을 제한 한다면 아래와 같이 사용할 수 있습니다.

 

제네릭의 장점

  1. 잘못된 타입이 들어올 수 있는 것을 컴파일 단계에서 방지 해줌
  2. 클래스 외부에서 타입을 지정해주기 때문에 타입을 따로 체크하고 변환 해줄 필요가 없음.
  3. 코드의 재사용성이 높아짐.

 

 

 

참고자료:
https://yaboong.github.io/java/2019/01/19/java-generics-1/
https://st-lab.tistory.com/153
https://programmingnote.tistory.com/44

반응형

'IT > Java' 카테고리의 다른 글

Error와 Exception  (0) 2021.04.08
Primitive Type과 Reference Type  (0) 2021.04.07
JVM의 이해  (0) 2021.04.05
String, StringBuffer, StringBuilder 특징 및 차이점  (0) 2020.03.24
Lombok 어노테이션 설명  (0) 2018.12.06

댓글