Package org.codehaus.groovy.reflection

## Class ReflectionUtils

- java.lang.Object
- - org.codehaus.groovy.reflection.ReflectionUtils

-     public class ReflectionUtils
      extends Object

  This class contains utility methods to determine which class called the current class to multiple levels of depth. Calls used to handle the groovy MOP are excluded from the level counting.

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `ReflectionUtils()` |

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static boolean` | `checkAccessible​(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)` |
    `static boolean` | `checkCanSetAccessible​(AccessibleObject accessibleObject, Class<?> caller)` |
    `static Class` | `getCallingClass()` | Get the immediate calling class, ignoring MOP frames.
    `static Class` | `getCallingClass​(int matchLevel)` | Get the called that is matchLevel stack frames before the call, ignoring MOP frames.
    `static Class` | `getCallingClass​(int matchLevel, Collection<String> extraIgnoredPackages)` | Get the called that is matchLevel stack frames before the call, ignoring MOP frames and desired exclude packages.
    `static List<Method>` | `getDeclaredMethods​(Class<?> type, String name, Class<?>... parameterTypes)` |
    `static List<Method>` | `getMethods​(Class<?> type, String name, Class<?>... parameterTypes)` |
    `static boolean` | `isCallingClassReflectionAvailable()` | Determine whether or not the getCallingClass methods will return any sensible results.
    `static Optional<AccessibleObject>` | `makeAccessible​(AccessibleObject ao)` |
    `static AccessibleObject[]` | `makeAccessible​(AccessibleObject[] aoa)` |
    `static Optional<AccessibleObject>` | `makeAccessibleInPrivilegedAction​(AccessibleObject ao)` |
    `static boolean` | `trySetAccessible​(AccessibleObject ao)` |

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

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

- - ### Constructor Detail

    - #### ReflectionUtils

          public ReflectionUtils()

  - ### Method Detail

    - #### isCallingClassReflectionAvailable

          public static boolean isCallingClassReflectionAvailable()

      Determine whether or not the getCallingClass methods will return any sensible results. On JVMs that are not Sun derived i.e. (gcj, Harmony) this will likely return false. When not available all getCallingClass methods will return null.
      Returns:
        true if getCallingClass can return anything but null, false if it will only return null.

    - #### getCallingClass

          public static Class getCallingClass()

      Get the immediate calling class, ignoring MOP frames.
      Returns:
        The Class of the caller

    - #### getCallingClass

          public static Class getCallingClass​(int matchLevel)

      Get the called that is matchLevel stack frames before the call, ignoring MOP frames.
      Parameters:
        `matchLevel` - how may call stacks down to look. If it is less than 1 it is treated as though it was 1.
      Returns:
        The Class of the matched caller, or null if there aren't enough stackframes to satisfy matchLevel

    - #### getCallingClass

          public static Class getCallingClass​(int matchLevel,
                                              Collection<String> extraIgnoredPackages)

      Get the called that is matchLevel stack frames before the call, ignoring MOP frames and desired exclude packages.
      Parameters:
        `matchLevel` - how may call stacks down to look. If it is less than 1 it is treated as though it was 1.
        `extraIgnoredPackages` - A collection of string names of packages to exclude in addition to the MOP packages when counting stack frames.
      Returns:
        The Class of the matched caller, or null if there aren't enough stackframes to satisfy matchLevel

    - #### getDeclaredMethods

          public static List<Method> getDeclaredMethods​(Class<?> type,
                                                        String name,
                                                        Class<?>... parameterTypes)

    - #### getMethods

          public static List<Method> getMethods​(Class<?> type,
                                                String name,
                                                Class<?>... parameterTypes)

    - #### checkCanSetAccessible

          public static boolean checkCanSetAccessible​(AccessibleObject accessibleObject,
                                                      Class<?> caller)

    - #### checkAccessible

          public static boolean checkAccessible​(Class<?> callerClass,
                                                Class<?> declaringClass,
                                                int memberModifiers,
                                                boolean allowIllegalAccess)

    - #### trySetAccessible

          public static boolean trySetAccessible​(AccessibleObject ao)

    - #### makeAccessibleInPrivilegedAction

          public static Optional<AccessibleObject> makeAccessibleInPrivilegedAction​(AccessibleObject ao)

    - #### makeAccessible

          public static Optional<AccessibleObject> makeAccessible​(AccessibleObject ao)

    - #### makeAccessible

          public static AccessibleObject[] makeAccessible​(AccessibleObject[] aoa)