ObjectConstructor (FreeMarker 2.3.23 API)
Date: 2015-07-05

freemarker.template.utility

## Class ObjectConstructor

- java.lang.Object
- - freemarker.template.utility.ObjectConstructor

- All Implemented Interfaces:
    TemplateMethodModel, TemplateMethodModelEx, TemplateModel

      public class ObjectConstructor
      extends Object
      implements TemplateMethodModelEx

  An object that you can make available in a template to instantiate arbitrary beans-wrapped objects in a template. Beware of this class's security implications. It allows the instantiation of arbitrary objects and invoking methods on them. Usage is something like:
  myDataModel.put("objectConstructor", new ObjectConstructor());
  And then from your FTL code:
  <#assign aList = objectConstructor("java.util.ArrayList", 100)>

- - ### Field Summary

    - ### Fields inherited from interface freemarker.template.TemplateModel

      `NOTHING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ObjectConstructor()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `exec(List args)` Executes the method call.

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

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

- - ### Constructor Detail

    - #### ObjectConstructor

          public ObjectConstructor()

  - ### Method Detail

    - #### exec

          public Object exec(List args)
                      throws TemplateModelException

      Description copied from interface: `TemplateMethodModelEx`
      Executes the method call.
      Specified by:
        `exec` in interface `TemplateMethodModel`
      Specified by:
        `exec` in interface `TemplateMethodModelEx`
      Parameters:
        `args` - a `List` of `TemplateModel`-s, containing the arguments passed to the method. If the implementation absolutely wants to operate on POJOs, it can use the static utility methods in the `DeepUnwrap` class to easily obtain them. However, unwrapping is not always possible (or not perfectly), and isn't always efficient, so it's recommended to use the original `TemplateModel` value as much as possible.
      Returns:
        the return value of the method, or `null`. If the returned value does not implement `TemplateModel`, it will be automatically wrapped using the `environment's object wrapper`.
      Throws:
        `TemplateModelException`