package com.fasterxml.jackson.databind.deser;

import com.fasterxml.jackson.databind.*;

Interface for providers of ValueInstantiator instances. Implemented when an object wants to provide custom value instantiators, usually to support custom value types with alternate constructors, or which need specified post-processing after construction but before binding data.
/** * Interface for providers of {@link ValueInstantiator} instances. * Implemented when an object wants to provide custom value instantiators, * usually to support custom value types with alternate constructors, or * which need specified post-processing after construction but before * binding data. */
public interface ValueInstantiators {
Method called to find the ValueInstantiator to use for creating instances of specified type during deserialization. Note that a default value instantiator is always created first and passed; if an implementation does not want to modify or replace it, it has to return passed instance as is (returning null is an error)
Params:
  • config – Deserialization configuration in use
  • beanDesc – Additional information about POJO type to be instantiated
  • defaultInstantiator – Instantiator that will be used if no changes are made; passed to allow custom instances to use annotation-provided information (note, however, that earlier ValueInstantiators may have changed it to a custom instantiator already)
Returns:Instantiator to use; either defaultInstantiator that was passed, or a custom variant; cannot be null.
/** * Method called to find the {@link ValueInstantiator} to use for creating * instances of specified type during deserialization. * Note that a default value instantiator is always created first and passed; * if an implementation does not want to modify or replace it, it has to return * passed instance as is (returning null is an error) * * @param config Deserialization configuration in use * @param beanDesc Additional information about POJO type to be instantiated * @param defaultInstantiator Instantiator that will be used if no changes are made; * passed to allow custom instances to use annotation-provided information * (note, however, that earlier {@link ValueInstantiators} may have changed it to * a custom instantiator already) * * @return Instantiator to use; either <code>defaultInstantiator</code> that was passed, * or a custom variant; cannot be null. */
public ValueInstantiator findValueInstantiator(DeserializationConfig config, BeanDescription beanDesc, ValueInstantiator defaultInstantiator);
Basic "NOP" implementation that can be used as the base class for custom implementations. Safer to extend (instead of implementing ValueInstantiators) in case later Jackson versions add new methods in base interface.
/** * Basic "NOP" implementation that can be used as the base class for custom implementations. * Safer to extend (instead of implementing {@link ValueInstantiators}) in case later * Jackson versions add new methods in base interface. */
public static class Base implements ValueInstantiators { @Override public ValueInstantiator findValueInstantiator(DeserializationConfig config, BeanDescription beanDesc, ValueInstantiator defaultInstantiator) { return defaultInstantiator; } } }