package com.fasterxml.jackson.databind.type;

import java.lang.reflect.TypeVariable;

import com.fasterxml.jackson.databind.JavaType;

Type that represents Java Collection types (Lists, Sets).
/** * Type that represents Java Collection types (Lists, Sets). */
public final class CollectionType extends CollectionLikeType { private static final long serialVersionUID = 1L; /* /********************************************************** /* Life-cycle /********************************************************** */ private CollectionType(Class<?> collT, TypeBindings bindings, JavaType superClass, JavaType[] superInts, JavaType elemT, Object valueHandler, Object typeHandler, boolean asStatic) { super(collT, bindings, superClass, superInts, elemT, valueHandler, typeHandler, asStatic); }
Since:2.7
/** * @since 2.7 */
protected CollectionType(TypeBase base, JavaType elemT) { super(base, elemT); }
Since:2.7
/** * @since 2.7 */
public static CollectionType construct(Class<?> rawType, TypeBindings bindings, JavaType superClass, JavaType[] superInts, JavaType elemT) { return new CollectionType(rawType, bindings, superClass, superInts, elemT, null, null, false); }
Deprecated:Since 2.7, remove from 2.9
/** * @deprecated Since 2.7, remove from 2.9 */
@Deprecated // since 2.7 public static CollectionType construct(Class<?> rawType, JavaType elemT) { // First: may need to fabricate TypeBindings (needed for refining into // concrete collection types, as per [databind#1102]) TypeVariable<?>[] vars = rawType.getTypeParameters(); TypeBindings bindings; if ((vars == null) || (vars.length != 1)) { bindings = TypeBindings.emptyBindings(); } else { bindings = TypeBindings.create(rawType, elemT); } return new CollectionType(rawType, bindings, // !!! TODO: Wrong, does have supertypes, but: _bogusSuperClass(rawType), null, elemT, null, null, false); } @Deprecated // since 2.7 @Override protected JavaType _narrow(Class<?> subclass) { return new CollectionType(subclass, _bindings, _superClass, _superInterfaces, _elementType, null, null, _asStatic); } @Override public JavaType withContentType(JavaType contentType) { if (_elementType == contentType) { return this; } return new CollectionType(_class, _bindings, _superClass, _superInterfaces, contentType, _valueHandler, _typeHandler, _asStatic); } @Override public CollectionType withTypeHandler(Object h) { return new CollectionType(_class, _bindings, _superClass, _superInterfaces, _elementType, _valueHandler, h, _asStatic); } @Override public CollectionType withContentTypeHandler(Object h) { return new CollectionType(_class, _bindings, _superClass, _superInterfaces, _elementType.withTypeHandler(h), _valueHandler, _typeHandler, _asStatic); } @Override public CollectionType withValueHandler(Object h) { return new CollectionType(_class, _bindings, _superClass, _superInterfaces, _elementType, h, _typeHandler, _asStatic); } @Override public CollectionType withContentValueHandler(Object h) { return new CollectionType(_class, _bindings, _superClass, _superInterfaces, _elementType.withValueHandler(h), _valueHandler, _typeHandler, _asStatic); } @Override public CollectionType withStaticTyping() { if (_asStatic) { return this; } return new CollectionType(_class, _bindings, _superClass, _superInterfaces, _elementType.withStaticTyping(), _valueHandler, _typeHandler, true); } @Override public JavaType refine(Class<?> rawType, TypeBindings bindings, JavaType superClass, JavaType[] superInterfaces) { return new CollectionType(rawType, bindings, superClass, superInterfaces, _elementType, _valueHandler, _typeHandler, _asStatic); } /* /********************************************************** /* Standard methods /********************************************************** */ @Override public String toString() { return "[collection type; class "+_class.getName()+", contains "+_elementType+"]"; } }