충분히 쌓여가는
13.2 제네릭 타입 본문
제네릭 타입
결정되지 않은 타입을 파라미터로 가지는 클래스와 인터페이스
제네릭 타입은 선언부에 <> 부호가 붙고, 그 사이에 타입 파라미터들이 위치한다
public class 클래스명<A, B, ...> {...}
public interface 인터페이스명<A, B, ...> {...}
타입 파라미터는 변수명과 동일한 규칙에 따라 작성할 수 있지만
일반적으로 대문자 알파벳 한 글자로 표현한다
외부에서 제네릭 타입을 사용하려면 타입 파라미터에 구체적인 타입을 지정해야 한다
지정하지 않으면 Object 타입이 사용된다
kind와 model 필드를 타입 파라미터로 선언하고, Getter의 매개변수와 Setter의 리턴 타입 역시 타입 파라미터로 선언한다
이렇게 타입 파라미터를 사용하는 이유는 Product에 다양한 종류와 모델 제품을 저장하기 위해서이다
package ch13.sec02.exam01;
public class Product<K, M> {
private K kind; //타입 파라미터를 필드 타입으로 사용
private M model; //타입 파라미터를 필드 타입으로 사용
public K getKind() {
return kind;
}
public void setKind(K kind) {
this.kind = kind;
}
public M getModel() {
return model;
}
public void setModel(M model) {
this.model = model;
}
}
package ch13.sec02.exam01;
public class Tv {
}
package ch13.sec02.exam01;
public class Car {
}
package ch13.sec02.exam01;
public class GenericExample {
public static void main(String[] args) {
Product<Tv, String> product1 = new Product<>();
product1.setKind(new Tv());
product1.setModel("스마트Tv");
Tv tv = product1.getKind();
String tvModel = product1.getModel();
Product<Car, String> product2 = new Product<>();
product2.setKind(new Car());
product2.setModel("SUV자동차");
Car car = product2.getKind();
String carModel = product2.getModel();
}
}
'이것이 자바다 > 13 제네릭' 카테고리의 다른 글
13.1 제네릭이란? (0) | 2024.04.11 |
---|