제네릭 사용법
제네릭 주요 개념 (바운디드 타입, 와일드 카드)
제네릭 메소드 만들기
Erasure
Object[] array = new Long[5];
로 정의해도 안에 다른 long을 제외한 타입이 들어갈 수 있다 왜냐면 new 가 런타임에 생성되기 때문에 array 참조타입은 object지만 아직 무슨 타입을 진짜로 참조하는지는 모름
public class <T> method{}
== public class (class T) Object method{}
제네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 컴파일 타임에 체크하기 때문에 타입 안정성을 높인다. 의도되지 않은 타입의 객체가 저장되는 것을 막는다.
class 클래스명<참조자료형> {
}
위와 같은 방법으로 선언할 수 있다.
public class Box {
private Object object;
public Object getObject() {
return object;
}
public void setObject(Object object) {
this.object = object;
}
}
위의 예시에서 자료를 꺼내 쓸 때 명시적으로 형변환이 필요하고 이 과정에서 오류가 발생할 수 있다. 이럴 때 제네릭을 쓰면 된다.
public class Box<T> {
private T object;
public T getObject() {
return object;
}
public void setObject(T object) {
this.object = object;
}
}