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

freemarker.ext.beans

## Class SimpleMethodModel

- java.lang.Object
- - freemarker.ext.beans.SimpleMethodModel

- All Implemented Interfaces:
    freemarker.core._UnexpectedTypeErrorExplainerTemplateModel, TemplateMethodModel, TemplateMethodModelEx, TemplateModel, TemplateSequenceModel

      public final class SimpleMethodModel
      extends Object
      implements TemplateMethodModelEx, TemplateSequenceModel, freemarker.core._UnexpectedTypeErrorExplainerTemplateModel

  A class that will wrap a reflected method call into a `TemplateMethodModel` interface. It is used by `BeanModel` to wrap reflected method calls for non-overloaded methods.

- - ### Field Summary

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

      `NOTHING`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Object` | `exec(List arguments)` Invokes the method, passing it the arguments from the list.
    `Object[]` | `explainTypeError(Class[] expectedClasses)` Implementation of experimental interface; don't use it, no backward compatibility guarantee!
    `TemplateModel` | `get(int index)` Retrieves the i-th template model in this sequence.
    `protected Member` | `getMember()`
    `int` | `size()`
    `String` | `toString()`

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

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

- - ### Method Detail

    - #### exec

          public Object exec(List arguments)
                      throws TemplateModelException

      Invokes the method, passing it the arguments from the list.
      Specified by:
        `exec` in interface `TemplateMethodModel`
      Specified by:
        `exec` in interface `TemplateMethodModelEx`
      Parameters:
        `arguments` - 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`

    - #### get

          public TemplateModel get(int index)
                            throws TemplateModelException

      Description copied from interface: `TemplateSequenceModel`
      Retrieves the i-th template model in this sequence.
      Specified by:
        `get` in interface `TemplateSequenceModel`
      Returns:
        the item at the specified index, or `null` if the index is out of bounds. Note that a `null` value is interpreted by FreeMarker as "variable does not exist", and accessing a missing variables is usually considered as an error in the FreeMarker Template Language, so the usage of a bad index will not remain hidden, unless the default value for that case was also specified in the template.
      Throws:
        `TemplateModelException`

    - #### size

          public int size()
                   throws TemplateModelException

      Specified by:
        `size` in interface `TemplateSequenceModel`
      Returns:
        the number of items in the list.
      Throws:
        `TemplateModelException`

    - #### toString

          public String toString()

      Overrides:
        `toString` in class `Object`

    - #### explainTypeError

          public Object[] explainTypeError(Class[] expectedClasses)

      Implementation of experimental interface; don't use it, no backward compatibility guarantee!
      Specified by:
        `explainTypeError` in interface `freemarker.core._UnexpectedTypeErrorExplainerTemplateModel`

    - #### getMember

          protected Member getMember()