본문 바로가기

Java 심화/2. 제네릭 < >

2. Java 자바 제네릭 - 멀티 타입 파라미터( class<K, V . . . >, interface<K, V, . . .> )

 

 

제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수 있다.

 

이 경우 각각 타입 파라미터를 콤마로 구분한다.

 

예) Product.java : 제네릭 클래스

 

public class Product<T, M> {
    private T kind;
    private M model;
    
    public T getKind() { return this.kind; }
    public M getModel() { return this.model; }
    
    public void setKind(T kind) { this.kind = kind; }
    public void setModel(M model) { this.model = model; }
}

 

ProductExample.java : 제네릭 객체 생성 실행 클래스

 

public class ProductExample {
    public static void main(String[] args) {
        
        Product<Tv, String> product1 = new Product<Tv, String>();
        
        product1.setKind(new Tv());
        product1.setModel("스마트Tv");
        
        Tv tv = product1.getKind();
        String tvModel = product1.getModel();
        
        Product<Car, String> product2 = new Product<Car, String>();
        
        product2.setKind(new Car());
        product2.setModel("디젤");
        
        Car car = product2.getKind();
        String carModel = product2.getModel();
    }
}

 

제네릭 타입 변수 선언과 객체 생성을 동시에 할 때,

 

타입 파라미터 자리에 구체적인 타입을 지정하는 코드가 중복으로 나와서 복잡해질 수 있다.

 

Product<Tv, String> product = new Product<Tv, String>();

 

자바 7 부터 제네릭 타입 파라미터 중복 입력을 줄이기 위해 <> 연산자를 제공한다.

 

컴파일러는 타입 파라미터 부분에 <> 연산자를 사용하면 타입 파라미터를 유추해서 자동으로 설정한다.

 

Product<Tv, String> product = new Product<>();