javax.ws.rs.core
Class GenericEntity<T>

java.lang.Object
  extended by javax.ws.rs.core.GenericEntity<T>

public class GenericEntity<T>
extends java.lang.Object

Represents a response 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.

Users are required to 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);

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.


Constructor Summary
protected GenericEntity(T entity)
          Constructs a new generic entity.
 
Method Summary
 T getEntity()
          Get the enclosed entity
 java.lang.Class<?> getRawType()
          Gets the raw type of the enclosed entity.
 java.lang.reflect.Type getType()
          Gets underlying Type instance.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

GenericEntity

protected GenericEntity(T entity)
Constructs a new generic entity. Derives represented class from type parameter. Note that this constructor is protected, users should create a (usually anonymous) subclass as shown above.

Parameters:
entity - the entity instance, must not be null
Throws:
java.lang.IllegalArgumentException - if entity is null
Method Detail

getRawType

public final java.lang.Class<?> getRawType()
Gets the raw type of the enclosed entity. Note that this is the raw type of the instance, not the raw type of the type parameter. I.e. in the example in the introduction, the raw type is ArrayList not List.

Returns:
the raw type

getType

public final java.lang.reflect.Type getType()
Gets underlying Type instance. Note that this is derived from the type parameter, not the enclosed instance. I.e. in the example in the introduction, the type is List<String> not ArrayList<String>.

Returns:
the type

getEntity

public final T getEntity()
Get the enclosed entity

Returns:
the enclosed entity


Copyright © 2008 Sun Microsystems, Inc. All Rights Reserved.