DefaultMemberAccessPolicy (FreeMarker 2.3.35 API)
Description: declaration: package: freemarker.ext.beans, class: DefaultMemberAccessPolicy

Package freemarker.ext.beans

# Class DefaultMemberAccessPolicy

java.lang.Object
freemarker.ext.beans.DefaultMemberAccessPolicy

All Implemented Interfaces:
  `MemberAccessPolicy`

public final class DefaultMemberAccessPolicy extends Object implements MemberAccessPolicy
Member access policy to implement the default behavior that's mostly compatible with pre-2.3.30 versions, but is somewhat safer; it still can't provide safety in practice, if you allow untrusted users to edit templates! Use `WhitelistMemberAccessPolicy` if you need stricter control.

Since:
  2.3.30

- ## Method Summary

  Modifier and Type
  Method
  Description
  `ClassMemberAccessPolicy`
  `forClass​(Class<?> contextClass)`
  Returns the `ClassMemberAccessPolicy` that encapsulates the member access policy for a given class.
  `static DefaultMemberAccessPolicy`
  `getInstance​(Version incompatibleImprovements)`
  Returns the singleton that's compatible with the given incompatible improvements version.
  `boolean`
  `isToStringAlwaysExposed()`
  If this returns `true`, we won't invoke the probably more expensive lookup to figure out if `Object.toString()` (including its overridden variants) is exposed for a given object.

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

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

- ## Method Details

  - ### getInstance

    public static DefaultMemberAccessPolicy getInstance​(Version incompatibleImprovements)
    Returns the singleton that's compatible with the given incompatible improvements version.

  - ### forClass

    public ClassMemberAccessPolicy forClass​(Class<?> contextClass)
    Description copied from interface: `MemberAccessPolicy`
    Returns the `ClassMemberAccessPolicy` that encapsulates the member access policy for a given class. `ClassMemberAccessPolicy` implementations need not be thread-safe. Because class introspection results are cached, and so this method is usually only called once for a given class, the `ClassMemberAccessPolicy` instances shouldn't be cached by the implementation of this method.
    Specified by:
      `forClass` in interface `MemberAccessPolicy`
    Parameters:
      `contextClass` - The exact class of object from which members will be get in the templates.

  - ### isToStringAlwaysExposed

    public boolean isToStringAlwaysExposed()
    Description copied from interface: `MemberAccessPolicy`
    If this returns `true`, we won't invoke the probably more expensive lookup to figure out if `Object.toString()` (including its overridden variants) is exposed for a given object. If this returns `false`, then no such optimization is made. This method was introduced as `Object.toString()` is called frequently, as it's used whenever an object is converted to string, like printed to the output, and it's not even a reflection-based call (we just call `Object.toString()` in Java). So we try to avoid the overhead of a more generic method call.
    Specified by:
      `isToStringAlwaysExposed` in interface `MemberAccessPolicy`