Class CollectionFactory

java.lang.Object
org.springframework.core.CollectionFactory

public final class CollectionFactory extends Object
Factory for collections that is aware of common Java and Spring collection types.

Mainly for internal use within the framework.

Since:
1.1.1
Author:
Juergen Hoeller, Arjen Poutsma, Oliver Gierke, Sam Brannen
  • Method Details

    • isApproximableCollectionType

      public static boolean isApproximableCollectionType(@Nullable Class<?> collectionType)
      Determine whether the given collection type is an approximable type, i.e. a type that createApproximateCollection(java.lang.Object, int) can approximate.
      Parameters:
      collectionType - the collection type to check
      Returns:
      true if the type is approximable
    • createApproximateCollection

      public static <E> Collection<E> createApproximateCollection(@Nullable Object collection, int capacity)
      Create the most approximate collection for the given collection.

      Warning: Since the parameterized type E is not bound to the type of elements contained in the supplied collection, type safety cannot be guaranteed if the supplied collection is an EnumSet. In such scenarios, the caller is responsible for ensuring that the element type for the supplied collection is an enum type matching type E. As an alternative, the caller may wish to treat the return value as a raw collection or collection of Object.

      Parameters:
      collection - the original collection object, potentially null
      capacity - the initial capacity
      Returns:
      a new, empty collection instance
      See Also:
    • createCollection

      public static <E> Collection<E> createCollection(Class<?> collectionType, int capacity)
      Create the most appropriate collection for the given collection type.

      Delegates to createCollection(Class, Class, int) with a null element type.

      Parameters:
      collectionType - the desired type of the target collection (never null)
      capacity - the initial capacity
      Returns:
      a new collection instance
      Throws:
      IllegalArgumentException - if the supplied collectionType is null or of type EnumSet
    • createCollection

      public static <E> Collection<E> createCollection(Class<?> collectionType, @Nullable Class<?> elementType, int capacity)
      Create the most appropriate collection for the given collection type.

      Warning: Since the parameterized type E is not bound to the supplied elementType, type safety cannot be guaranteed if the desired collectionType is EnumSet. In such scenarios, the caller is responsible for ensuring that the supplied elementType is an enum type matching type E. As an alternative, the caller may wish to treat the return value as a raw collection or collection of Object.

      Parameters:
      collectionType - the desired type of the target collection (never null)
      elementType - the collection's element type, or null if unknown (note: only relevant for EnumSet creation)
      capacity - the initial capacity
      Returns:
      a new collection instance
      Throws:
      IllegalArgumentException - if the supplied collectionType is null; or if the desired collectionType is EnumSet and the supplied elementType is not a subtype of Enum
      Since:
      4.1.3
      See Also:
    • isApproximableMapType

      public static boolean isApproximableMapType(@Nullable Class<?> mapType)
      Determine whether the given map type is an approximable type, i.e. a type that createApproximateMap(java.lang.Object, int) can approximate.
      Parameters:
      mapType - the map type to check
      Returns:
      true if the type is approximable
    • createApproximateMap

      public static <K, V> Map<K,V> createApproximateMap(@Nullable Object map, int capacity)
      Create the most approximate map for the given map.

      Warning: Since the parameterized type K is not bound to the type of keys contained in the supplied map, type safety cannot be guaranteed if the supplied map is an EnumMap. In such scenarios, the caller is responsible for ensuring that the key type in the supplied map is an enum type matching type K. As an alternative, the caller may wish to treat the return value as a raw map or map keyed by Object.

      Parameters:
      map - the original map object, potentially null
      capacity - the initial capacity
      Returns:
      a new, empty map instance
      See Also:
    • createMap

      public static <K, V> Map<K,V> createMap(Class<?> mapType, int capacity)
      Create the most appropriate map for the given map type.

      Delegates to createMap(Class, Class, int) with a null key type.

      Parameters:
      mapType - the desired type of the target map
      capacity - the initial capacity
      Returns:
      a new map instance
      Throws:
      IllegalArgumentException - if the supplied mapType is null or of type EnumMap
    • createMap

      public static <K, V> Map<K,V> createMap(Class<?> mapType, @Nullable Class<?> keyType, int capacity)
      Create the most appropriate map for the given map type.

      Warning: Since the parameterized type K is not bound to the supplied keyType, type safety cannot be guaranteed if the desired mapType is EnumMap. In such scenarios, the caller is responsible for ensuring that the keyType is an enum type matching type K. As an alternative, the caller may wish to treat the return value as a raw map or map keyed by Object. Similarly, type safety cannot be enforced if the desired mapType is MultiValueMap.

      Parameters:
      mapType - the desired type of the target map (never null)
      keyType - the map's key type, or null if unknown (note: only relevant for EnumMap creation)
      capacity - the initial capacity
      Returns:
      a new map instance
      Throws:
      IllegalArgumentException - if the supplied mapType is null; or if the desired mapType is EnumMap and the supplied keyType is not a subtype of Enum
      Since:
      4.1.3
      See Also:
    • createStringAdaptingProperties

      public static Properties createStringAdaptingProperties()
      Create a variant of Properties that automatically adapts non-String values to String representations in Properties.getProperty(java.lang.String).

      In addition, the returned Properties instance sorts properties alphanumerically based on their keys.

      Returns:
      a new Properties instance
      Since:
      4.3.4
      See Also:
    • createSortedProperties

      public static Properties createSortedProperties(boolean omitComments)
      Create a variant of Properties that sorts properties alphanumerically based on their keys.

      This can be useful when storing the Properties instance in a properties file, since it allows such files to be generated in a repeatable manner with consistent ordering of properties. Comments in generated properties files can also be optionally omitted.

      Parameters:
      omitComments - true if comments should be omitted when storing properties in a file
      Returns:
      a new Properties instance
      Since:
      5.2
      See Also:
    • createSortedProperties

      public static Properties createSortedProperties(Properties properties, boolean omitComments)
      Create a variant of Properties that sorts properties alphanumerically based on their keys.

      This can be useful when storing the Properties instance in a properties file, since it allows such files to be generated in a repeatable manner with consistent ordering of properties. Comments in generated properties files can also be optionally omitted.

      The returned Properties instance will be populated with properties from the supplied properties object, but default properties from the supplied properties object will not be copied.

      Parameters:
      properties - the Properties object from which to copy the initial properties
      omitComments - true if comments should be omitted when storing properties in a file
      Returns:
      a new Properties instance
      Since:
      5.2
      See Also: