48.4. 일반 유형 정보가 있는 엔터티 반환


48.4.1. 개요

애플리케이션에서 반환된 개체의 MIME 유형 또는 응답을 serialize하는 데 사용되는 엔터티 공급자를 더 많이 제어해야 하는 경우가 있습니다. JAX-RS javax.ws.rs.core.GenericEntity<T > 클래스는 엔터티를 나타내는 개체의 일반 유형을 지정하기 위한 메커니즘을 제공하여 엔터티의 직렬화를 제어할 수 있습니다.

48.4.2. GenericEntity<T> 오브젝트 사용

응답을 serialize하는 엔터티 공급자를 선택하는 데 사용되는 기준 중 하나는 개체의 일반 유형입니다. 개체의 일반 유형은 개체의 Java 유형을 나타냅니다. 공용 Java 유형 또는 JAXB 개체가 반환되면 런타임에서 Java 리플렉션을 사용하여 제네릭 형식을 결정할 수 있습니다. 그러나 JAX-RS Response 개체가 반환되면 런타임에서 래핑된 엔터티의 일반 유형을 확인할 수 없으며 개체의 실제 Java 클래스가 Java 유형으로 사용됩니다.

엔터티 공급자에 올바른 일반 유형 정보가 제공되도록 하기 위해 엔터티를 GenericEntity<T > 개체에 래핑할 수 있습니다.

리소스 메서드는 GenericEntity<T> 개체를 직접 반환할 수도 있습니다.Resource methods can also directly return a GenericEntity<T > object. 실제로 이 방법은 거의 사용되지 않습니다. GenericEntity<T> 개체에서 래핑되지 않은 엔터티에 대해 저장된 일반 유형 정보와 일반적으로 GenericEntity<T> 개체에 래핑된 엔터티에 저장된 일반 유형 정보는 일반적으로 동일합니다.The generic type information determined by reflect of an unwrapped entity and the generic type information stored for an entity wrapped in a GenericEntity<T > object are typically the same.

48.4.3. GenericEntity<T> 오브젝트 생성

GenericEntity<T> 오브젝트를 생성하는 방법에는 두 가지가 있습니다.

  1. 래핑되는 엔터티를 사용하여 GenericEntity<T > 클래스의 하위 클래스를 생성합니다. 서브 클래스를 사용하여 GenericEntity<T> 오브젝트 생성 런타임 시 제네릭 형식을 사용할 수 있는 List<String> 형식의 엔터티가 포함된 GenericEntity<T > 개체를 만드는 방법을 보여 줍니다.Shows how to create a GenericEntity<T> object containing an entity of type List<String > whose generic type will be available at runtime.

    서브 클래스를 사용하여 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 >를 생성하는 데 사용되는 서브 클래스는 일반적으로 익명입니다.

  2. 제네릭 유형 정보를 엔터티와 함께 제공하여 인스턴스를 직접 생성합니다. 예 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();
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.