48.4. 일반 유형 정보를 사용하여 엔터티 반환
48.4.1. 개요
애플리케이션에 반환된 개체의 MIME 유형 또는 응답을 직렬화하는 데 사용되는 엔터티 공급자를 더 많이 제어해야 하는 경우가 있습니다. Cryostat-RS javax.ws.core.GenericEntity<T
> 클래스는 엔터티를 나타내는 개체의 일반 유형을 지정하는 메커니즘을 제공하여 엔터티 직렬화에 대한 세분화된 제어를 제공합니다.
48.4.2. GenericEntity<T> 오브젝트 사용
응답을 직렬화하는 엔터티 공급자를 선택하는 데 사용되는 기준 중 하나는 오브젝트의 일반 유형입니다. 오브젝트의 일반 유형은 오브젝트의 Java 유형을 나타냅니다. 공통 Java 유형 또는 CryostatB 개체가 반환되면 런타임에서 Java 리플렉션을 사용하여 일반 유형을 결정할 수 있습니다. 그러나 Cryostat-RS Response
개체가 반환되면 런타임에서 래핑된 엔터티의 일반 유형을 확인할 수 없으며 개체의 실제 Java 클래스가 Java 유형으로 사용됩니다.
엔터티 공급자가 올바른 일반 유형 정보를 제공하도록 엔터티를 GenericEntity<T
> 개체로 래핑하여 반환된 Response
개체에 추가할 수 있습니다.
리소스 메서드는 GenericEntity<T
> 오브젝트를 직접 반환할 수도 있습니다. 실제로 이 방법은 거의 사용되지 않습니다. GenericEntity<T
> 개체에 래핑된 엔터티에 대해 저장된 일반 유형 정보와 래핑되지 않은 엔티티의 반영에 의해 결정된 일반 유형 정보는 일반적으로 동일합니다.
48.4.3. GenericEntity<T> 오브젝트 생성
GenericEntity<T
> 개체를 만드는 방법은 다음 두 가지가 있습니다.
래핑되는 엔터티를 사용하여
GenericEntity<T&
gt; 클래스의 하위 클래스를 만듭니다. 하위 클래스를 사용하여 GenericEntity<T> 오브젝트 생성 런타임 시 일반 유형을 사용할 수 있는List<String
> 유형의 엔터티가 포함된GenericEntity<T
> 개체를 만드는 방법을 보여줍니다.하위 클래스를 사용하여 GenericEntity<T> 오브젝트 생성
import javax.ws.rs.core.GenericEntity; List<String> list = new ArrayList<String>(); ... GenericEntity<List<String>> entity = new GenericEntity<List<String>>(list) {}; Response response = Response.ok(entity).build();
GenericEntity<T
> 개체를 만드는 데 사용되는 하위 클래스는 일반적으로 익명입니다.엔터티에 일반 유형 정보를 제공하여 인스턴스를 직접 생성합니다. 예 48.2. “GenericEntity<T> 오브젝트 직접 인스턴스화”
AtomicInteger
유형의 엔티티가 포함된 응답을 만드는 방법을 보여줍니다.예 48.2. GenericEntity<T> 오브젝트 직접 인스턴스화
import javax.ws.rs.core.GenericEntity; AtomicInteger result = new AtomicInteger(12); GenericEntity<AtomicInteger> entity = new GenericEntity<AtomicInteger>(result, result.getClass().getGenericSuperclass()); Response response = Response.ok(entity).build();