13.3 멀티 타입 파라미터(class<K,V,...>, interface<K,V,...>)

- 두 개 이상의 타입 파라미터를 사용해서 선언할 수 있다.

// class<K,V,...> {...}

// interface<K,V,...> {...}


- 중복된 타입 파라미터를 생략한 다이아몬드(<>) 연산자

// 자바7부터 지원


제네릭 클래스

1
2
3
4
5
6
7
8
9
10
11
12
package sec03.exam01_multi_type_parameter;
 
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; }
}
cs

Tv 클래스

1
2
3
4
5
package sec03.exam01_multi_type_parameter;
 
public class Tv {
 
}
cs


Car 클래스

1
2
3
4
5
package sec03.exam01_multi_type_parameter;
 
public class Car {
 
}
c



제네릭 객체 생성 // 실행 클래스

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package sec03.exam01_multi_type_parameter;
 
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();
    }
}
cs









Posted by 너래쟁이
: