본문 바로가기

언어/JAVA

21장 제네릭

제네릭

generic

직역하면 '일반적인'이라는 뜻이다.

자바에서의 제네릭(generic)이란 데이터의 타입을 일반화한다는 것을 의미한다.

제네릭은 클래스나 메소드에서 사용할 내부데이터 타입을 컴파일 시에 미리 지정하는 방법이다.

위의 설명만 본다면 뭔말인가 싶기도 하다. 자세한 설명은 아래 선언방법과 같이 설명해보겠다.

 

제네릭 선언은 클래스<사용할 타입>으로 한다.

class Test<T> {
    
    List<T> test = new ArrayList<>();
   
    public void pop( T inputItem ) {
        test.add( inputItem );
    }
    
}
 
public class Example {
    
    public static void main(String[] args) {
        Test<String> stringStack = new Test();
        
        Test<Integer> integerStack = new Test();
    
        stringStack.pop( "테스트" );
        
    }
    
}

어떤 자료구조를 만드려할 때 String타입도 지원하고싶고 Integer타입등 여러가지 타입을 지원하고싶은데 따로따로 타입에 따라 만들기에는 너무 비효율 적이다. 이러한 문제를 해결하기 위해 제네릭이라는 것을 사용한다.

 

특정타입을 미리 지정하는 것이 아닌 필요에 의해 지정할 수 있도록 하는 일반(generic)타입이라는 것이다.

 

 

제네릭 타입 규칙

  • E: 요소(Element, 자바 컬렉션에서 주로 사용됨)
  • K: 키
  • N: 숫자
  • T: 타입
  • V: 값
  • S,U,V: 두번째, 세번째, 네번째 선언된 타입

꼭 이 규칙을 지켜야 컴파일이 되는 것은 아니다. 하지만 다른 어떤 사람이 보더라도 이해할 수 있도록 이 규칙을 따르는 것이 좋다.

 

제네릭을 사용할 때 <> 안에 들어가는 타입은 기본적으로 어떤 타입이더라도 상관 없다. 

 

장점

1. 클래스나 메소드 내부에서 사용되는 객체의 타입 안정성을 높일 수 있다.

2. 반환값에 대한 타입 변환 및 타입 검사하를 할 필요가 없어 관리가 편하다.

3. 코드의 재사용성이 높아진다.

'언어 > JAVA' 카테고리의 다른 글

Hash  (0) 2021.12.07
22장 자바 컬렉션 part1  (0) 2021.11.05
20장 java.lang 패키지  (0) 2021.11.03
19장 자바의 역사 / JVM  (0) 2021.10.30
18장 정리  (0) 2021.10.30