# Class InstantiateFactory<T>

java.lang.Object
org.apache.commons.collections4.functors.InstantiateFactory<T>

Type Parameters:
  `T` - the type of results supplied by this supplier.

All Implemented Interfaces:
  `Supplier<T>`, `Factory<T>`

public class InstantiateFactory<T> extends Object implements Factory<T>
Factory implementation that creates a new object instance by reflection.

WARNING: from v4.1 onwards this class will not be serializable anymore in order to prevent potential remote code execution exploits. Please refer to COLLECTIONS-580 for more details.

Since:
  3.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `InstantiateFactory(Class<T> classToInstantiate)`
  Constructor that performs no validation.
  `InstantiateFactory(Class<T> classToInstantiate, Class<?>[] paramTypes, Object[] args)`
  Constructor that performs no validation.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `T`
  `create()`
  Creates an object using the stored constructor.
  `static <T> Factory<T>`
  `instantiateFactory(Class<T> classToInstantiate, Class<?>[] paramTypes, Object[] args)`
  Factory method that performs validation.

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

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

  ### Methods inherited from interface org.apache.commons.collections4.Factory

  `get`

- ## Constructor Details

  - ### InstantiateFactory

    public InstantiateFactory(Class<T> classToInstantiate)
    Constructor that performs no validation. Use `instantiateFactory` if you want that.
    Parameters:
      `classToInstantiate` - the class to instantiate

  - ### InstantiateFactory

    public InstantiateFactory(Class<T> classToInstantiate, Class<?>[] paramTypes, Object[] args)
    Constructor that performs no validation. Use `instantiateFactory` if you want that.
    Parameters:
      `classToInstantiate` - the class to instantiate
      `paramTypes` - the constructor parameter types, cloned
      `args` - the constructor arguments, cloned

- ## Method Details

  - ### instantiateFactory

    public static <T> Factory<T> instantiateFactory(Class<T> classToInstantiate, Class<?>[] paramTypes, Object[] args)
    Factory method that performs validation.
    Type Parameters:
      `T` - the type the factory creates
    Parameters:
      `classToInstantiate` - the class to instantiate, not null
      `paramTypes` - the constructor parameter types, cloned
      `args` - the constructor arguments, cloned
    Returns:
      a new instantiate factory
    Throws:
      `NullPointerException` - if classToInstantiate is null
      `IllegalArgumentException` - if paramTypes does not match args

  - ### create

    public T create()
    Creates an object using the stored constructor.
    Specified by:
      `create` in interface `Factory<T>`
    Returns:
      the new object