-
[Java] 제네릭(generic) - 멀티 타입 파라미터CSE/Java 2015. 9. 20. 10:00
제네릭은 여러 절로 구성되어 있습니다.
멀티 타입 파라미터(class<K, V, ...>, interface<K, V, ...>)
제네릭 타입은 두 개 이상의 멀티 타입 파라미터를 사용할 수 있는데, 이 경우 각 타입 파라미터를 콤마로 구분합니다.
다음 예제는 Product<T, M> 제네릭 타입을 정의하고 ProductExam 클래스에서 Product<Tv, String> 객체와 Product<Car, String> 객체를 생성합니다. 그리고 Getter와 Setter를 호출하는 방법을 보여줍니다.
* Product.java
123456789101112131415161718192021222324public class Product<T, M> {private T kind;private M model;public T getKind() {return kind;}public void setKind(T kind) {this.kind = kind;}public M getModel() {return model;}public void setModel(M model) {this.model = model;}}cs * ProductExam.java
123456789101112131415161718192021222324252627package generic;public class ProductExam {public static void main(String[] args) {Product<Tv, String> tvProduct = new Product<Tv, String>();tvProduct.setKind(new Tv());tvProduct.setModel("스마트 TV");Tv tv = tvProduct.getKind();String tvModel = tvProduct.getModel();System.out.println(tv.getClass().getName() + ":" + tvModel);Product<Car, String> carProduct = new Product<Car, String>();carProduct.setKind(new Car());carProduct.setModel("Das Auto");Car car = carProduct.getKind();String carModel = carProduct.getModel();System.out.println(car.getClass().getName() + ":" + carModel);}}cs 제네릭 타입 변수 선언과 객체 생성을 동시에 할 때 타입 파라미터 자리에 구체적인 타입을 지정하는 코드가 중복해서 나와 다소 복잡해질 수 있습니다.
자바 7부터 제네릭 타입 파라미터의 중복 기술을 줄이기 위해 다이아몬드 연산자 <>를 제공합니다.
자바 컴파일러는 타입 파라미터 부분에 <> 연산자를 사용하면 타입 파라미터를 유추해서 자동으로 설정해줍니다.
예를 들어 다음은 자바 6 이전 버전에서 사용한 제네릭 타입 변수 선언과 객체 생성 코드 입니다.
12Product<Tv, String> product<Tv, String>();cs 자바 7부터는 다이아몬드 연산자를 사용해서 다음과 같이 간단하게 작성할 수 있습니다.
12Product<Tv, String> product<>();cs * 이 포스트은 서적 '이것이 자바다' 를 참고하여 작성한 포스트입니다.
'CSE > Java' 카테고리의 다른 글
[Java] 제네릭(generic) - 제네릭 타입의 상속과 구현 (0) 2015.09.20 [Java] 제네릭(generic) - 제한된 타입 파라미터, 와일드카드 타입 (1) 2015.09.20 [Java] 제네릭(generic) - 제네릭 메소드 (0) 2015.09.20 [Java] 제네릭(Generic) - 제네릭 타입 (1) 2015.09.20 [Java] 제네릭(Generic) - Intro (0) 2015.09.20 [Java] 컬렉션 프레임워크 - 동기화, 병렬 처리 (0) 2015.09.20