반응형
제네릭 자료형 정의
- 클래스에서 사용하는 변수의 자료형이 여러개 일수 있고, 그 기능(메서드)은 동일한 경우 클래스의 자료형을 특정하지 않고 추후 해당 클래스를 지정 할 수 있도록 선언
- 실제 사용되는 자료형의 변환은 컴파일러에 의해 검증되므로 안정적인 프로그래밍 방식
- 컬렉션 프레임워크에서 많이 사용되고 있음
- 제네릭 타입을 사용하지 않는 경우의 예
3D 프린터 예제
package ch44;
public class GenericPrinter<T> {
private T material;
public void setMaterial(T material) {
this.material = material;
}
public T getMaterial() {
return material;
}
public String toString() {
return material.toString();
}
}
- 자료형 매개변수 T(type parameter): 이 클래스를 사용하는 시점에 실제 사용할 자료형을 지정, static 변수는 사용할 수 없음
- GenericPrinter: 제네릭 자료형
- E: element, K: key, V: value 등 여러 알파벳을 의미에 따라 사용 가능
package ch44;
public class Powder {
public String toString() {
return "재료는 Powder 입니다";
}
}
package ch44;
public class Plastic {
public String toString() {
return "재료는 Plastic 입니다";
}
}
package ch44;
public class GeneriPrinterTest {
public static void main(String[] args) {
Powder powder = new Powder();
GenericPrinter<Powder> powderPrinter = new GenericPrinter<>();
powderPrinter.setMaterial(powder);
Powder p = powderPrinter.getMaterial(); // 형변환할 필요가 없음
System.out.println(powder.toString());
GenericPrinter<Plastic> plasticPrinter = new GenericPrinter<Plastic>();
plasticPrinter.setMaterial(new Plastic());
System.out.println(plasticPrinter);
}
}
다이아몬드 연산자 <>
- ArrayList list = new ArrayList<>(); // 다이아몬드 연산자 내부에서 자료형은 생략가능 함
- 제네릭에서 자료형 추론(자바 10부터) ArrayList list = new ArrayList() => var list = new ArrayList();
반응형
'언어 > JAVA' 카테고리의 다른 글
자바에서 제공되는 자료구조 구현 클래스들 - 컬렉션 프레임워크 (0) | 2021.05.02 |
---|---|
제네릭 메서드 (0) | 2021.05.02 |
큐(Queue) (0) | 2021.05.02 |
스택(stack) (0) | 2021.04.26 |
연결 리스트(LinkedList) (0) | 2021.04.26 |