com.fasterxml.jackson.databind

## Enum MapperFeature

- java.lang.Object
- - java.lang.Enum<MapperFeature>
  - - com.fasterxml.jackson.databind.MapperFeature

All Implemented Interfaces:
  ConfigFeature, Serializable, Comparable<MapperFeature>

    public enum MapperFeature
    extends Enum<MapperFeature>
    implements ConfigFeature

Enumeration that defines simple on/off features to set for `ObjectMapper`, and accessible (but not changeable) via `ObjectReader` and `ObjectWriter` (as well as through various convenience methods through context objects).

Note that in addition to being only mutable via `ObjectMapper`, changes only take effect when done before any serialization or deserialization calls -- that is, caller must follow "configure-then-use" pattern.

### Enum Constant Summary

Enum Constants
Enum Constant and Description
`ACCEPT_CASE_INSENSITIVE_ENUMS` Feature that determines if Enum deserialization should be case sensitive or not.
`ACCEPT_CASE_INSENSITIVE_PROPERTIES` Feature that will allow for more forgiving deserialization of incoming JSON.
`ALLOW_COERCION_OF_SCALARS` Feature that determines whether coercions from secondary representations are allowed for simple non-textual scalar types: numbers and booleans.
`ALLOW_EXPLICIT_PROPERTY_RENAMING` Feature that when enabled will allow explicitly named properties (i.e., fields or methods annotated with `JsonProperty`("explicitName")) to be re-named by a `PropertyNamingStrategy`, if one is configured.
`ALLOW_FINAL_FIELDS_AS_MUTATORS` Feature that determines whether member fields declared as 'final' may be auto-detected to be used mutators (used to change value of the logical property) or not.
`AUTO_DETECT_CREATORS` Feature that determines whether "creator" methods are automatically detected by consider public constructors, and static single argument methods with name "valueOf".
`AUTO_DETECT_FIELDS` Feature that determines whether non-static fields are recognized as properties.
`AUTO_DETECT_GETTERS` Feature that determines whether regular "getter" methods are automatically detected based on standard Bean naming convention or not.
`AUTO_DETECT_IS_GETTERS` Feature that determines whether "is getter" methods are automatically detected based on standard Bean naming convention or not.
`AUTO_DETECT_SETTERS` Feature that determines whether "setter" methods are automatically detected based on standard Bean naming convention or not.
`CAN_OVERRIDE_ACCESS_MODIFIERS` Feature that determines whether method and field access modifier settings can be overridden when accessing properties.
`DEFAULT_VIEW_INCLUSION` Feature that determines whether properties that have no view annotations are included in JSON serialization views (see `JsonView` for more details on JSON Views).
`IGNORE_DUPLICATE_MODULE_REGISTRATIONS` Feature that determines whether multiple registrations of same module should be ignored or not; if enabled, only the first registration call results in module being called, and possible duplicate calls are silently ignored; if disabled, no checking is done and all registration calls are dispatched to module.
`IGNORE_MERGE_FOR_UNMERGEABLE` Setting that determines what happens if an attempt is made to explicitly "merge" value of a property, where value does not support merging; either merging is skipped and new value is created (`true`) or an exception is thrown (false).

`INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES`
Feature that determines handling of `java.beans.ConstructorProperties`annotation: when enabled, it is considered as alias of `JsonCreator`, to mean that constructor should be considered a property-based Creator; when disabled, only constructor parameter name information is used, but constructor is NOT considered an explicit Creator (although may be discovered as one using other annotations or heuristics).``

`INFER_PROPERTY_MUTATORS` Feature that determines whether member mutators (fields and setters) may be "pulled in" even if they are not visible, as long as there is a visible accessor (getter or field) with same name.
`OVERRIDE_PUBLIC_ACCESS_MODIFIERS` Feature that determines that forces call to `AccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)` even for `public` accessors -- that is, even if no such call is needed from functionality perspective -- if call is allowed (that is, `CAN_OVERRIDE_ACCESS_MODIFIERS` is set to true).
`PROPAGATE_TRANSIENT_MARKER` Feature that determines how `transient` modifier for fields is handled: if disabled, it is only taken to mean exclusion of the field as accessor; if true, it is taken to imply removal of the whole property.
`REQUIRE_SETTERS_FOR_GETTERS` Feature that determines whether getters (getter methods) can be auto-detected if there is no matching mutator (setter, constructor parameter or field) or not: if set to true, only getters that match a mutator are auto-discovered; if false, all auto-detectable getters can be discovered.
`SORT_PROPERTIES_ALPHABETICALLY` Feature that defines default property serialization order used for POJO fields (note: does not apply to `Map` serialization!): if enabled, default ordering is alphabetic (similar to how `JsonPropertyOrder.alphabetic()` works); if disabled, order is unspecified (based on what JDK gives us, which may be declaration order, but is not guaranteed).
`USE_ANNOTATIONS` Feature that determines whether annotation introspection is used for configuration; if enabled, configured `AnnotationIntrospector` will be used: if disabled, no annotations are considered.
`USE_BASE_TYPE_AS_DEFAULT_IMPL` Feature that specifies whether the declared base type of a polymorphic value is to be used as the "default" implementation, if no explicit default class is specified via `@JsonTypeInfo.defaultImpl` annotation.
`USE_GETTERS_AS_SETTERS` Feature that determines whether otherwise regular "getter" methods (but only ones that handle Collections and Maps, not getters of other type) can be used for purpose of getting a reference to a Collection and Map to modify the property, without requiring a setter method.
`USE_STATIC_TYPING` Feature that determines whether the type detection for serialization should be using actual dynamic runtime type, or declared static type.
`USE_STD_BEAN_NAMING` Feature that may be enabled to enforce strict compatibility with Bean name introspection, instead of slightly different mechanism Jackson defaults to.
`USE_WRAPPER_NAME_AS_PROPERTY_NAME` Feature that can be enabled to make property names be overridden by wrapper name (usually detected with annotations as defined by `AnnotationIntrospector.findWrapperName(com.fasterxml.jackson.databind.introspect.Annotated)`.

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods
`boolean` `enabledByDefault()` Accessor for checking whether this feature is enabled by default.
`boolean` `enabledIn(int flags)` Convenience method for checking whether feature is enabled in given bitmask
`int` `getMask()` Returns bit mask for this feature instance
`static MapperFeature` `valueOf(String name)` Returns the enum constant of this type with the specified name.
`static MapperFeature[]` `values()` Returns an array containing the constants of this enum type, in the order they are declared.

### Methods inherited from class java.lang.Enum

`clone, compareTo, equals, finalize, getDeclaringClass, hashCode, name, ordinal, toString, valueOf`

### Methods inherited from class java.lang.Object

`getClass, notify, notifyAll, wait, wait, wait`

### Enum Constant Detail

#### USE_ANNOTATIONS

    public static final MapperFeature USE_ANNOTATIONS

Feature that determines whether annotation introspection is used for configuration; if enabled, configured `AnnotationIntrospector` will be used: if disabled, no annotations are considered.

Feature is enabled by default.

#### USE_GETTERS_AS_SETTERS

    public static final MapperFeature USE_GETTERS_AS_SETTERS

Feature that determines whether otherwise regular "getter" methods (but only ones that handle Collections and Maps, not getters of other type) can be used for purpose of getting a reference to a Collection and Map to modify the property, without requiring a setter method. This is similar to how JAXB framework sets Collections and Maps: no setter is involved, just setter.

Note that such getters-as-setters methods have lower precedence than setters, so they are only used if no setter is found for the Map/Collection property.

Feature is enabled by default.

#### PROPAGATE_TRANSIENT_MARKER

    public static final MapperFeature PROPAGATE_TRANSIENT_MARKER

Feature that determines how `transient` modifier for fields is handled: if disabled, it is only taken to mean exclusion of the field as accessor; if true, it is taken to imply removal of the whole property.

Feature is disabled by default, meaning that existence of `transient` for a field does not necessarily lead to ignoral of getters or setters but just ignoring the use of field for access.

Since:
  2.6

#### AUTO_DETECT_CREATORS

    public static final MapperFeature AUTO_DETECT_CREATORS

Feature that determines whether "creator" methods are automatically detected by consider public constructors, and static single argument methods with name "valueOf". If disabled, only methods explicitly annotated are considered creator methods (except for the no-arg default constructor which is always considered a factory method).

Note that this feature has lower precedence than per-class annotations, and is only used if there isn't more granular configuration available.

Feature is enabled by default.

#### AUTO_DETECT_FIELDS

    public static final MapperFeature AUTO_DETECT_FIELDS

Feature that determines whether non-static fields are recognized as properties. If yes, then all public member fields are considered as properties. If disabled, only fields explicitly annotated are considered property fields.

Note that this feature has lower precedence than per-class annotations, and is only used if there isn't more granular configuration available.

Feature is enabled by default.

#### AUTO_DETECT_GETTERS

    public static final MapperFeature AUTO_DETECT_GETTERS

Feature that determines whether regular "getter" methods are automatically detected based on standard Bean naming convention or not. If yes, then all public zero-argument methods that start with prefix "get" are considered as getters. If disabled, only methods explicitly annotated are considered getters.

Note that since version 1.3, this does NOT include "is getters" (see `AUTO_DETECT_IS_GETTERS` for details)

Note that this feature has lower precedence than per-class annotations, and is only used if there isn't more granular configuration available.

Feature is enabled by default.

#### AUTO_DETECT_IS_GETTERS

    public static final MapperFeature AUTO_DETECT_IS_GETTERS

Feature that determines whether "is getter" methods are automatically detected based on standard Bean naming convention or not. If yes, then all public zero-argument methods that start with prefix "is", and whose return type is boolean are considered as "is getters". If disabled, only methods explicitly annotated are considered getters.

Note that this feature has lower precedence than per-class annotations, and is only used if there isn't more granular configuration available.

Feature is enabled by default.

#### AUTO_DETECT_SETTERS

    public static final MapperFeature AUTO_DETECT_SETTERS

Feature that determines whether "setter" methods are automatically detected based on standard Bean naming convention or not. If yes, then all public one-argument methods that start with prefix "set" are considered setters. If disabled, only methods explicitly annotated are considered setters.

Note that this feature has lower precedence than per-class annotations, and is only used if there isn't more granular configuration available.

Feature is enabled by default.

#### REQUIRE_SETTERS_FOR_GETTERS

    public static final MapperFeature REQUIRE_SETTERS_FOR_GETTERS

Feature that determines whether getters (getter methods) can be auto-detected if there is no matching mutator (setter, constructor parameter or field) or not: if set to true, only getters that match a mutator are auto-discovered; if false, all auto-detectable getters can be discovered.

Feature is disabled by default.

#### ALLOW_FINAL_FIELDS_AS_MUTATORS

    public static final MapperFeature ALLOW_FINAL_FIELDS_AS_MUTATORS

Feature that determines whether member fields declared as 'final' may be auto-detected to be used mutators (used to change value of the logical property) or not. If enabled, 'final' access modifier has no effect, and such fields may be detected according to usual visibility and inference rules; if disabled, such fields are NOT used as mutators except if explicitly annotated for such use.

Feature is enabled by default, for backwards compatibility reasons.

Since:
  2.2

#### INFER_PROPERTY_MUTATORS

    public static final MapperFeature INFER_PROPERTY_MUTATORS

Feature that determines whether member mutators (fields and setters) may be "pulled in" even if they are not visible, as long as there is a visible accessor (getter or field) with same name. For example: field "value" may be inferred as mutator, if there is visible or explicitly marked getter "getValue()". If enabled, inferring is enabled; otherwise (disabled) only visible and explicitly annotated accessors are ever used.

Note that 'getters' are never inferred and need to be either visible (including bean-style naming) or explicitly annotated.

Feature is enabled by default.

Since:
  2.2

#### INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES

    public static final MapperFeature INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES

Feature that determines handling of `java.beans.ConstructorProperties`annotation: when enabled, it is considered as alias of `JsonCreator`, to mean that constructor should be considered a property-based Creator; when disabled, only constructor parameter name information is used, but constructor is NOT considered an explicit Creator (although may be discovered as one using other annotations or heuristics).

Feature is mostly used to help interoperability with frameworks like Lombok that may automatically generate `ConstructorProperties` annotation but without necessarily meaning that constructor should be used as Creator for deserialization.

Feature is enabled by default.

``

Since:
  2.9

#### CAN_OVERRIDE_ACCESS_MODIFIERS

    public static final MapperFeature CAN_OVERRIDE_ACCESS_MODIFIERS

Feature that determines whether method and field access modifier settings can be overridden when accessing properties. If enabled, method `AccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)` may be called to enable access to otherwise unaccessible objects.

Note that this setting may have significant performance implications, since access override helps remove costly access checks on each and every Reflection access. If you are considering disabling this feature, be sure to verify performance consequences if usage is performance sensitive. Also note that performance effects vary between Java platforms (JavaSE vs Android, for example), as well as JDK versions: older versions seemed to have more significant performance difference.

Conversely, on some platforms, it may be necessary to disable this feature as platform does not allow such calls. For example, when developing Applets (or other Java code that runs on tightly restricted sandbox), it may be necessary to disable the feature regardless of performance effects.

Feature is enabled by default.

#### OVERRIDE_PUBLIC_ACCESS_MODIFIERS

    public static final MapperFeature OVERRIDE_PUBLIC_ACCESS_MODIFIERS

Feature that determines that forces call to `AccessibleObject.setAccessible(java.lang.reflect.AccessibleObject[], boolean)` even for `public` accessors -- that is, even if no such call is needed from functionality perspective -- if call is allowed (that is, `CAN_OVERRIDE_ACCESS_MODIFIERS` is set to true). The main reason to enable this feature is possible performance improvement as JDK does not have to perform access checks; these checks are otherwise made for all accessors, including public ones, and may result in slower Reflection calls. Exact impact (if any) depends on Java platform (Java SE, Android) as well as JDK version.

Feature is enabled by default, for legacy reasons (it was the behavior until 2.6)

Since:
  2.7

#### USE_STATIC_TYPING

    public static final MapperFeature USE_STATIC_TYPING

Feature that determines whether the type detection for serialization should be using actual dynamic runtime type, or declared static type. Note that deserialization always uses declared static types since no runtime types are available (as we are creating instances after using type information).

This global default value can be overridden at class, method or field level by using `JsonSerialize.typing()` annotation property.

Feature is disabled by default which means that dynamic runtime types are used (instead of declared static types) for serialization.

#### USE_BASE_TYPE_AS_DEFAULT_IMPL

    public static final MapperFeature USE_BASE_TYPE_AS_DEFAULT_IMPL

Feature that specifies whether the declared base type of a polymorphic value is to be used as the "default" implementation, if no explicit default class is specified via `@JsonTypeInfo.defaultImpl` annotation.

Note that feature only has effect on deserialization of regular polymorphic properties: it does NOT affect non-polymorphic cases, and is unlikely to work with Default Typing.

Feature is disabled by default for backwards compatibility.

Since:
  2.9.6

#### DEFAULT_VIEW_INCLUSION

    public static final MapperFeature DEFAULT_VIEW_INCLUSION

Feature that determines whether properties that have no view annotations are included in JSON serialization views (see `JsonView` for more details on JSON Views). If enabled, non-annotated properties will be included; when disabled, they will be excluded. So this feature changes between "opt-in" (feature disabled) and "opt-out" (feature enabled) modes.

Default value is enabled, meaning that non-annotated properties are included in all views if there is no `JsonView` annotation.

Feature is enabled by default.

#### SORT_PROPERTIES_ALPHABETICALLY

    public static final MapperFeature SORT_PROPERTIES_ALPHABETICALLY

Feature that defines default property serialization order used for POJO fields (note: does not apply to `Map` serialization!): if enabled, default ordering is alphabetic (similar to how `JsonPropertyOrder.alphabetic()` works); if disabled, order is unspecified (based on what JDK gives us, which may be declaration order, but is not guaranteed).

Note that this is just the default behavior, and can be overridden by explicit overrides in classes (for example with `JsonPropertyOrder` annotation)

Feature is disabled by default.

#### ACCEPT_CASE_INSENSITIVE_PROPERTIES

    public static final MapperFeature ACCEPT_CASE_INSENSITIVE_PROPERTIES

Feature that will allow for more forgiving deserialization of incoming JSON. If enabled, the bean properties will be matched using their lower-case equivalents, meaning that any case-combination (incoming and matching names are canonicalized by lower-casing) should work.

Note that there is additional performance overhead since incoming property names need to be lower-cased before comparison, for cases where there are upper-case letters. Overhead for names that are already lower-case should be negligible however.

Feature is disabled by default.

Since:
  2.5

#### ACCEPT_CASE_INSENSITIVE_ENUMS

    public static final MapperFeature ACCEPT_CASE_INSENSITIVE_ENUMS

Feature that determines if Enum deserialization should be case sensitive or not. If enabled, Enum deserialization will ignore case, that is, case of incoming String value and enum id (dependant on other settings, either `name()`, `toString()`, or explicit override) do not need to match.

Feature is disabled by default.

Since:
  2.9

#### USE_WRAPPER_NAME_AS_PROPERTY_NAME

    public static final MapperFeature USE_WRAPPER_NAME_AS_PROPERTY_NAME

Feature that can be enabled to make property names be overridden by wrapper name (usually detected with annotations as defined by `AnnotationIntrospector.findWrapperName(com.fasterxml.jackson.databind.introspect.Annotated)`. If enabled, all properties that have associated non-empty Wrapper name will use that wrapper name instead of property name. If disabled, wrapper name is only used for wrapping (if anything).

Feature is disabled by default.

Since:
  2.1

#### USE_STD_BEAN_NAMING

    public static final MapperFeature USE_STD_BEAN_NAMING

Feature that may be enabled to enforce strict compatibility with Bean name introspection, instead of slightly different mechanism Jackson defaults to. Specific difference is that Jackson always lower cases leading upper-case letters, so "getURL()" becomes "url" property; whereas standard Bean naming only lower-cases the first letter if it is NOT followed by another upper-case letter (so "getURL()" would result in "URL" property).

Feature is disabled by default for backwards compatibility purposes: earlier Jackson versions used Jackson's own mechanism.

Since:
  2.5

#### ALLOW_EXPLICIT_PROPERTY_RENAMING

    public static final MapperFeature ALLOW_EXPLICIT_PROPERTY_RENAMING

Feature that when enabled will allow explicitly named properties (i.e., fields or methods annotated with `JsonProperty`("explicitName")) to be re-named by a `PropertyNamingStrategy`, if one is configured.

Feature is disabled by default.

Since:
  2.7

#### ALLOW_COERCION_OF_SCALARS

    public static final MapperFeature ALLOW_COERCION_OF_SCALARS

Feature that determines whether coercions from secondary representations are allowed for simple non-textual scalar types: numbers and booleans. This includes `primitive` types and their wrappers, but excludes `java.lang.String` and date/time types.

When feature is disabled, only strictly compatible input may be bound: numbers for numbers, boolean values for booleans. When feature is enabled, conversions from JSON String are allowed, as long as textual value matches (for example, String "true" is allowed as equivalent of JSON boolean token `true`; or String "1.0" for `double`).

Note that it is possible that other configurability options can override this in closer scope (like on per-type or per-property basis); this is just the global default.

Feature is enabled by default (for backwards compatibility since this was the default behavior)

Since:
  2.9

#### IGNORE_DUPLICATE_MODULE_REGISTRATIONS

    public static final MapperFeature IGNORE_DUPLICATE_MODULE_REGISTRATIONS

Feature that determines whether multiple registrations of same module should be ignored or not; if enabled, only the first registration call results in module being called, and possible duplicate calls are silently ignored; if disabled, no checking is done and all registration calls are dispatched to module.

Definition of "same module" is based on using `Module.getTypeId()`; modules with same non-null `type id` are considered same for purposes of duplicate registration. This also avoids having to keep track of actual module instances; only ids will be kept track of (and only if this feature is enabled).

Feature is enabled by default.

Since:
  2.5

#### IGNORE_MERGE_FOR_UNMERGEABLE

    public static final MapperFeature IGNORE_MERGE_FOR_UNMERGEABLE

Setting that determines what happens if an attempt is made to explicitly "merge" value of a property, where value does not support merging; either merging is skipped and new value is created (`true`) or an exception is thrown (false).

Feature is disabled by default since non-mergeable property types are ignored even if defaults call for merging, and usually explicit per-type or per-property settings for such types should result in an exception.

Since:
  2.9

### Method Detail

#### values

    public static MapperFeature[] values()

Returns an array containing the constants of this enum type, in the order they are declared. This method may be used to iterate over the constants as follows:

    for (MapperFeature c : MapperFeature.values())
        System.out.println(c);

Returns:
  an array containing the constants of this enum type, in the order they are declared

#### valueOf

    public static MapperFeature valueOf(String name)

Returns the enum constant of this type with the specified name. The string must match exactly an identifier used to declare an enum constant in this type. (Extraneous whitespace characters are not permitted.)

Parameters:
  `name` - the name of the enum constant to be returned.
Returns:
  the enum constant with the specified name
Throws:
  `IllegalArgumentException` - if this enum type has no constant with the specified name
  `NullPointerException` - if the argument is null

#### enabledByDefault

    public boolean enabledByDefault()

Description copied from interface: `ConfigFeature`
Accessor for checking whether this feature is enabled by default.

Specified by:
  `enabledByDefault` in interface `ConfigFeature`

#### getMask

    public int getMask()

Description copied from interface: `ConfigFeature`
Returns bit mask for this feature instance

Specified by:
  `getMask` in interface `ConfigFeature`

#### enabledIn

    public boolean enabledIn(int flags)

Description copied from interface: `ConfigFeature`
Convenience method for checking whether feature is enabled in given bitmask

Specified by:
  `enabledIn` in interface `ConfigFeature`