본문 바로가기

Language/Java

[JAVA] 자바 제네릭(Generic)

제네릭(Generic)

: 제네릭의 사전적 용어를 찾아보면 ( 포괄적인, 총칭의 ) 라는 뜻을 가진 단어이다.

java에서는 클래스에서 사용할 타입을 클래스 외부에서 설정하는 기법을 의미한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class GTest<T> {
    private T data;
 
    public T getData() {
        return data;
    }
 
    public void setData(T data) {
        this.data = data;
    }
 
}
 
cs

위와 같은 방법으로 사용되며, T는 보통 Type을 뜻한다.

 

<종류>

E - Element

K - Key

N - Number

T - type

V - Value

 

1. Generic Class

: 클래스 내부에서 사용될 자료형을 지정한다.

괄호안엔 반드시 reapper 클래스 사용

 

2. Generic Method

: 클래스에 제네릭을 선언하지 않고, 메서드에만 제네릭을 선언

메소드의 매개변수 또는 리턴타입이 제네릭이라면

리턴타입 앞에도 제네릭을 선언해야 한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class GTest2 {
    
    public static <T> T function(T data) {
        T result;
        if(data instanceof Integer) {
            result = (T)"정수";
        }else if(data instanceof Double || data instanceof Float) {
            result = (T)"실수";
        }else if(data instanceof Character) {
            result = (T)"문자";
        }else if(data instanceof String) {
            result = (T)"문자열";
        }else {
            result = null;
        }
        
        return result;
    }
}
 
cs

 

3.Generic Interface