제네릭 클래스
정의
제네릭클래스에서는 여러 참조 자료형을 사용해야하는 부분에 Object가 아닌 하나의 문자로 표현
< T >를 뭐라고 부르는 지?
< > - 다이아몬드 연산자
T - 자료형 매게변수 ( = 자료형을 매게변수로 받는 다는 뜻 (꼭 T가 아니여도 됨. 아무거나 OK))
GenericPrinter<T>.
public class GenericPrinter<T>{
// <T> = 자료형을 매게변수로 받음. 이때 T 를 자료형 매게변수라고 함.(Type parameter)
//< >이 안에 실제 사용할 자료형을 매게변수로 받으면 자료형 매게변수인 T형이 해당 자료형으로 변함.
private T material;
//해당 자료형이 필요한 부분에는 모두 T문자를 사용하여 구현
public void setMaterial( T material ){
this.material = material;
}
public T getMaterial(){
return material;
}
}
다이아몬드 연산자<>
< > → 이게 다이아몬드 연산자
ArrayList<String> list = new ArrayList<>(); //생성부분에서는 생략 가능 < > 생략가능
특징
선언된 자료형을 보고 생략된 부분이 선언된 자료형임을 컴파일러가 유추할 수 있기 때문에
생성부분에서는 생략 가능
자료형 매게변수 T와 static
자료형 매게변수 T는 static변수나 매서드에서 사용 할 수 있을 까?
자료형 매게변수 T 는 static 변수의 자료형이나 static메서드 내부에서 사용할 수 없음
why?
자료형 매게변수로 받을 실제 자료형이 정해지는 순간은
재네릭클래스의 인스턴스가 생성되는 순간이기 때문에
//재네릭클래스의 인스턴스가 생성될 때 실제 사용할 자료형이 정해짐<String>
ArrayList<String> list = new ArrayList<>();
제네릭에서 자료형 추론하기
자료형 추론
변수에 대입되는 값을 보고 컴파일러가 추론하는 것
ArrayList<String> list = new ArrayList<String>();
→ var list = new ArrayList<String>();
특징
- 자바 10이후 부터 제네릭도 자료형 추론가능
- 지역변수로 선언되는 경우만 가능
출처 - Do it! 자바 프로그래밍 입문 (박은종 선생님)
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=157852460
'JAVA > 컬렉션 프레임워크' 카테고리의 다른 글
08.Collection인터페이스 (0) | 2022.12.19 |
---|---|
07. 컬렉션 프레임 워크란? (0) | 2022.12.06 |
04. < T extends 클래스 > 자료형매게변수 제한하기 (0) | 2022.11.22 |
03.제네릭 클래스 사용하기 (0) | 2022.11.21 |
01. 제네릭의 필요성 (0) | 2022.11.11 |