Class GenericEntity<T>

java.lang.Object
jakarta.ws.rs.core.GenericEntity<T>
Type Parameters:
T - response entity instance type

public class GenericEntity<T> extends Object
Represents a message entity of a generic type T.

Normally type erasure removes generic type information such that a Response instance that contains, e.g., an entity of type List<String> appears to contain a raw List<?> at runtime. When the generic type is required to select a suitable MessageBodyWriter, this class may be used to wrap the entity and capture its generic type.

There are two ways to create an instance:

  1. Create a (typically anonymous) subclass of this class which enables retrieval of the type information at runtime despite type erasure. For example, the following code shows how to create a Response containing an entity of type List<String> whose generic type will be available at runtime for selection of a suitable MessageBodyWriter:
     List<String> list = new ArrayList<String>();
     GenericEntity<List<String>> entity = new GenericEntity<List<String>>(list) {
     };
     Response response = Response.ok(entity).build();
     

    where list is the instance of List<String> that will form the response body and entity is an instance of an anonymous subclass of GenericEntity.

  2. Create an instance directly by supplying the generic type information with the entity. For example the following code shows how to create a response containing the result of a method invoked via reflection:
     Method method = ...;
     GenericEntity<Object> entity = new GenericEntity<Object>(
        method.invoke(...), method.getGenericReturnType());
     Response response = Response.ok(entity).build();
     

    The above obtains the generic type from the return type of the method, the raw type is the class of entity.

Since:
1.0
See Also: