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