ObjectConstructor (FreeMarker 2.3.35 API)
Description: declaration: package: freemarker.template.utility, class: ObjectConstructor

Package 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
  Description
  `ObjectConstructor()`

- ## Method Summary

  Modifier and Type
  Method
  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 Details

  - ### ObjectConstructor

    public ObjectConstructor()

- ## Method Details

  - ### 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`