2024/05 3

제네릭을 활용한 열거 타입 예제

한정적 타입 토큰 & Operation>자바 제네릭스 문법에서 사용되는 상한 경계(bound) 지정 구문이다.이 구문은 제네릭 타입 T가 두 가지 조건을 모두 만족해야 함을 나타낸다:Enum의 서브타입이어야 한다.Operation 인터페이스를 구현해야 한다.이 구문을 사용하면 T는 반드시 열거형(enum)이면서 동시에 Operation 인터페이스를 구현한 타입이어야 한다.이를 통해 열거형 타입에 대한 제네릭 클래스나 메서드를 정의하면서도, 해당 타입이 특정 인터페이스를 구현하도록 강제할 수 있다. Operation 인터페이스 정의public interface Operation { double apply(double x, double y);} Operation을 구현하는 Enum 정의public en..

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) 생산자는 데이터를 "생산"하여 제공하는 역할을 한다. 즉, 컬렉션이나 객체로부터 데이터를 추출하거나 ..