Package org.codehaus.groovy.runtime

## Class MetaClassHelper

- java.lang.Object
- - org.codehaus.groovy.runtime.MetaClassHelper

-     public class MetaClassHelper
      extends Object

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `static Object[]` | `ARRAY_WITH_NULL` |
    `static Object[]` | `EMPTY_ARRAY` |
    `static Class[]` | `EMPTY_CLASS_ARRAY` |
    `static Class[]` | `EMPTY_TYPE_ARRAY` |
    `protected static Logger` | `LOG` |

  - ### Constructor Summary

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

  - ### Method Summary

    All Methods Static Methods Concrete Methods Deprecated Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `static boolean` | `accessibleToConstructor​(Class at, Constructor constructor)` |
    `static Object` | `asPrimitiveArray​(List list, Class parameterType)` |
    `static Object[]` | `asWrapperArray​(Object parameters, Class componentType)` |
    `static long` | `calculateParameterDistance​(Class[] arguments, ParameterTypes pt)` |
    `static String` | `capitalize​(String property)` | Deprecated. Use BeanUtils.capitalize instead
    `static Class[]` | `castArgumentsToClassArray​(Object[] argTypes)` |
    `static Object` | `chooseEmptyMethodParams​(FastArray methods)` |
    `static Object` | `chooseMostGeneralMethodWith1NullParam​(FastArray methods)` | Deprecated.
    `static boolean` | `containsMatchingMethod​(List list, MetaMethod method)` |
    `static String` | `convertPropertyName​(String prop)` | Converts a String into a standard property name.
    `static Class[]` | `convertToTypeArray​(Object[] args)` | param instance array to the type array
    `static GroovyRuntimeException` | `createExceptionText​(String init, MetaMethod method, Object object, Object[] args, Throwable reason, boolean setReason)` |
    `static void` | `doSetMetaClass​(Object self, MetaClass mc)` | Sets the meta class for an object, by delegating to the appropriate `DefaultGroovyMethods` helper method.
    `protected static String` | `getClassName​(Object object)` |
    `static Closure` | `getMethodPointer​(Object object, String methodName)` | Returns a callable object for the given method name on the object.
    `static boolean` | `isAssignableFrom​(Class classToTransformTo, Class classToTransformFrom)` |
    `static boolean` | `isGenericSetMethod​(MetaMethod method)` |
    `protected static boolean` | `isSuperclass​(Class clazz, Class superclass)` |
    `static void` | `logMethodCall​(Object object, String methodName, Object[] arguments)` |
    `static Object` | `makeArray​(Object obj, Class secondary, int length)` |
    `static Object` | `makeCommonArray​(Object[] arguments, int offset, Class fallback)` |
    `protected static String` | `normalizedValue​(Object argument)` |
    `static boolean` | `parametersAreCompatible​(Class[] arguments, Class[] parameters)` |
    `static boolean` | `sameClass​(Class[] params, Object arg)` |
    `static boolean` | `sameClasses​(Class[] params)` |
    `static boolean` | `sameClasses​(Class[] params, Object arg1)` |
    `static boolean` | `sameClasses​(Class[] params, Object[] arguments)` |
    `static boolean` | `sameClasses​(Class[] params, Object[] arguments, boolean weakNullCheck)` |
    `static boolean` | `sameClasses​(Class[] params, Object arg1, Object arg2)` |
    `static boolean` | `sameClasses​(Class[] params, Object arg1, Object arg2, Object arg3)` |
    `static boolean` | `sameClasses​(Class[] params, Object arg1, Object arg2, Object arg3, Object arg4)` |
    `protected static String` | `shortName​(Object object)` |
    `static void` | `unwrap​(Object[] arguments)` |
    `static Class[]` | `wrap​(Class[] classes)` |

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

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

- - ### Field Detail

    - #### EMPTY_ARRAY

          public static final Object[] EMPTY_ARRAY

    - #### EMPTY_TYPE_ARRAY

          public static final Class[] EMPTY_TYPE_ARRAY

    - #### ARRAY_WITH_NULL

          public static final Object[] ARRAY_WITH_NULL

    - #### LOG

          protected static final Logger LOG

    - #### EMPTY_CLASS_ARRAY

          public static final Class[] EMPTY_CLASS_ARRAY

  - ### Constructor Detail

    - #### MetaClassHelper

          public MetaClassHelper()

  - ### Method Detail

    - #### accessibleToConstructor

          public static boolean accessibleToConstructor​(Class at,
                                                        Constructor constructor)

    - #### asWrapperArray

          public static Object[] asWrapperArray​(Object parameters,
                                                Class componentType)

    - #### asPrimitiveArray

          public static Object asPrimitiveArray​(List list,
                                                Class parameterType)

      Parameters:
        `list` - the original list
        `parameterType` - the resulting array type
      Returns:
        the constructed array

    - #### calculateParameterDistance

          public static long calculateParameterDistance​(Class[] arguments,
                                                        ParameterTypes pt)

    - #### capitalize

          @Deprecated
          public static String capitalize​(String property)

      Deprecated.
      Use BeanUtils.capitalize instead

    - #### chooseEmptyMethodParams

          public static Object chooseEmptyMethodParams​(FastArray methods)

      Parameters:
        `methods` - the methods to choose from
      Returns:
        the method with 1 parameter which takes the most general type of object (e.g. Object)

    - #### chooseMostGeneralMethodWith1NullParam

          @Deprecated
          public static Object chooseMostGeneralMethodWith1NullParam​(FastArray methods)

      Deprecated.
      Warning: this method does not choose properly if multiple methods with the same distance are encountered
      Parameters:
        `methods` - the methods to choose from
      Returns:
        the method with 1 parameter which takes the most general type of object (e.g. Object) ignoring primitive types

    - #### containsMatchingMethod

          public static boolean containsMatchingMethod​(List list,
                                                       MetaMethod method)

      Parameters:
        `list` - a list of MetaMethods
        `method` - the MetaMethod of interest
      Returns:
        true if a method of the same matching prototype was found in the list

    - #### convertToTypeArray

          public static Class[] convertToTypeArray​(Object[] args)

      param instance array to the type array
      Parameters:
        `args` - the arguments
      Returns:
        the types of the arguments

    - #### makeCommonArray

          public static Object makeCommonArray​(Object[] arguments,
                                               int offset,
                                               Class fallback)

    - #### makeArray

          public static Object makeArray​(Object obj,
                                         Class secondary,
                                         int length)

    - #### createExceptionText

          public static GroovyRuntimeException createExceptionText​(String init,
                                                                   MetaMethod method,
                                                                   Object object,
                                                                   Object[] args,
                                                                   Throwable reason,
                                                                   boolean setReason)

    - #### getClassName

          protected static String getClassName​(Object object)

    - #### getMethodPointer

          public static Closure getMethodPointer​(Object object,
                                                 String methodName)

      Returns a callable object for the given method name on the object. The object acts like a Closure in that it can be called, like a closure and passed around - though really its a method pointer, not a closure per se.
      Parameters:
        `object` - the object containing the method
        `methodName` - the method of interest
      Returns:
        the resulting closure-like method pointer

    - #### isAssignableFrom

          public static boolean isAssignableFrom​(Class classToTransformTo,
                                                 Class classToTransformFrom)

    - #### isGenericSetMethod

          public static boolean isGenericSetMethod​(MetaMethod method)

    - #### isSuperclass

          protected static boolean isSuperclass​(Class clazz,
                                                Class superclass)

    - #### parametersAreCompatible

          public static boolean parametersAreCompatible​(Class[] arguments,
                                                        Class[] parameters)

    - #### logMethodCall

          public static void logMethodCall​(Object object,
                                           String methodName,
                                           Object[] arguments)

    - #### normalizedValue

          protected static String normalizedValue​(Object argument)

    - #### shortName

          protected static String shortName​(Object object)

    - #### wrap

          public static Class[] wrap​(Class[] classes)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object[] arguments,
                                            boolean weakNullCheck)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object[] arguments)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object arg1)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object arg1,
                                            Object arg2)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object arg1,
                                            Object arg2,
                                            Object arg3)

    - #### sameClasses

          public static boolean sameClasses​(Class[] params,
                                            Object arg1,
                                            Object arg2,
                                            Object arg3,
                                            Object arg4)

    - #### sameClass

          public static boolean sameClass​(Class[] params,
                                          Object arg)

    - #### castArgumentsToClassArray

          public static Class[] castArgumentsToClassArray​(Object[] argTypes)

    - #### unwrap

          public static void unwrap​(Object[] arguments)

    - #### doSetMetaClass

          public static void doSetMetaClass​(Object self,
                                            MetaClass mc)

      Sets the meta class for an object, by delegating to the appropriate `DefaultGroovyMethods` helper method. This method was introduced as a breaking change in 2.0 to solve rare cases of stack overflow. See GROOVY-5285. The method is named doSetMetaClass in order to prevent misusages. Do not use this method directly unless you know what you do.
      Parameters:
        `self` - the object for which to set the meta class
        `mc` - the metaclass

    - #### convertPropertyName

          public static String convertPropertyName​(String prop)

      Converts a String into a standard property name.
      Parameters:
        `prop` - the original name
      Returns:
        the converted name