이펙티브 자바/5장 제네릭 2

ParameterizedTypeReference와 실체화 불가 타입

ParameterizedTypeReference는 스프링 프레임워크에서 제공하는 클래스로, 제네릭 타입을 갖는 객체의 타입 정보를 보존하기 위한 목적으로 사용된다. 주로 제네릭 타입을 갖는 클래스나 메서드를 호출하고 그 결과를 가져올 때 사용된다.일반적으로 자바의 제네릭은 런타임에 소거되기 때문에, 제네릭 타입에 대한 정보를 동적으로 추출하기 어렵다.하지만 ParameterizedTypeReference를 사용하면 런타임에 제네릭 타입 정보를 유지할 수 있다. 사용 예시ParameterizedTypeReference를 사용하는 예시를 살펴보겠다.스프링의 RestTemplate을 사용하여 HTTP 요청을 보내고, 응답을 받을 때 제네릭 타입을 유지하고 싶은 경우에 사용할 수 있다. import org.sp..

아이템 31 한정적 와일드카드를 사용해 API 유연성을 높여라

// E 생산자(producer) 매개변수에 와일드카드 타입 적용public void pushAll(Iterable src) { for (E e : src) push(e);}// E 소비자(consumer) 매개변수에 와일드카드 타입 적용public void popAll(Collection(? super E) dst) { while (!isEmpty()) dst.add(pop());} Stack 클래스의 메소드를 한정적 와일드카드를 사용해 구현했다.간단한 예제지만, 헷갈리는 부분들을 분명하게 공부하고 넘어가고자 한다. 제네릭에서의 생산자(producer)와 소비자(consumer)생산자(producer) 생산자는 데이터를 "생산"하여 제공하는 역할을 한다. 즉, 컬렉션이나 객체로부터 데이터를 추출하거나 ..