org.codehaus.jackson.annotate.JsonClass Maven / Gradle / Ivy
package org.codehaus.jackson.annotate;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* Annotation that can be used with "setter" methods to
* indicate the actual type to use for deserializing value
* of the associated logical property.
* This is usually done if the declared type is abstract or too generic;
* annotation can denote actual concrete type to instantiate when
* deserializing the property.
*
* The indicated type must be compatible with the declared
* type. For deserialization (setters) this means that
* it has to be a sub-type or implementation of
* the declared type.
* If this constraint is violated, an exception (usually
* {@link IllegalArgumentException}) can be thrown by runtime.
*
* Note that for container types (arrays, Lists/Collections/Maps) this
* indicates the type of container itself; for contained Objects, use
* {@link JsonContentClass} instead (or for Map keys,
* {@link JsonKeyClass}).
*
* @deprecated As of version 1.1, use {@link org.codehaus.jackson.map.annotate.JsonDeserialize#as} instead
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotation
public @interface JsonClass
{
/**
* Class that is the type to use for deserializating value of
* the property associated
* with the annotated method.
*/
public Class> value();
}