Package: grails.util

## [Java] Class GrailsClassUtils

- grails.util.GrailsClassUtils

- Utility methods for dealing with Grails class artifacts.

  Authors:
    Graeme Rocher

- - ### Field Summary

    Fields
    Modifiers | Name | Description
    --- | --- | ---
    `static java.util.Map<java.lang.Class<?>, java.lang.Class<?>>` | `PRIMITIVE_TYPE_COMPATIBLE_CLASSES` |

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `static java.lang.Object[]` | `collectionToObjectArray(java.util.Collection c)` Convenience method for converting a collection to an Object[]
    `` | `static java.util.Collection` | `createConcreteCollection(java.lang.Class interfaceType)` Creates a concrete collection for the suppied interface
    `` | `static org.springframework.cglib.reflect.FastClass` | `fastClass(java.lang.Class superClass)`
    `` | `static java.lang.String` | `findPropertyNameForValue(java.lang.Object target, java.lang.Object obj)` Locates the name of a property for the given value on the target object using Groovy's meta APIs.
    `` | `static java.lang.Class[]` | `getAllInterfaces(java.lang.Object instance)` Return all interfaces that the given instance implements as array, including ones implemented by superclasses.
    `` | `static java.util.Set<java.lang.Class>` | `getAllInterfacesAsSet(java.lang.Object instance)` Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.
    `` | `static java.lang.Class<?>[]` | `getAllInterfacesForClass(java.lang.Class<?> clazz)` Return all interfaces that the given class implements as array, including ones implemented by superclasses.
    `` | `static java.lang.Class<?>[]` | `getAllInterfacesForClass(java.lang.Class<?> clazz, java.lang.ClassLoader classLoader)` Return all interfaces that the given class implements as array, including ones implemented by superclasses.
    `` | `static java.util.Set<java.lang.Class>` | `getAllInterfacesForClassAsSet(java.lang.Class clazz)` Return all interfaces that the given class implements as Set, including ones implemented by superclasses.
    `` | `static java.util.Set<java.lang.Class>` | `getAllInterfacesForClassAsSet(java.lang.Class clazz, java.lang.ClassLoader classLoader)` Return all interfaces that the given class implements as Set, including ones implemented by superclasses.
    `` | `static boolean` | `getBooleanFromMap(java.lang.String key, java.util.Map<?, ?> map)` Retrieves a boolean value from a Map for the given key
    `` | `static boolean` | `getBooleanFromMap(java.lang.String key, java.util.Map<?, ?> map, boolean defaultValue)` Retrieves a boolean value from a Map for the given key
    `` | `static groovy.lang.MetaClass` | `getExpandoMetaClass(java.lang.Class clazz)`
    `` | `static java.lang.Object` | `getFieldValue(java.lang.Object obj, java.lang.String name)` Get the value of a declared field on an object
    `` | `static java.lang.String` | `getGetterName(java.lang.String propertyName)` Calculate the name for a getter method to retrieve the specified property
    `` | `static java.beans.PropertyDescriptor[]` | `getPropertiesAssignableToType(java.lang.Class<?> clazz, java.lang.Class<?> propertySuperType)` Retrieves all the properties of the given class which are assignable to the given type
    `` | `static java.beans.PropertyDescriptor[]` | `getPropertiesOfType(java.lang.Class<?> clazz, java.lang.Class<?> propertyType)` Retrieves all the properties of the given class for the given type
    `` | `static java.beans.PropertyDescriptor` | `getProperty(java.lang.Class<?> clazz, java.lang.String propertyName, java.lang.Class<?> propertyType)` Retrieves a property of the given class of the specified name and type
    `` | `static java.beans.PropertyDescriptor` | `getProperty(java.lang.Class<?> clazz, java.lang.String propertyName)` Retrieves a property of the given class of the specified name and type
    `` | `static java.beans.PropertyDescriptor` | `getPropertyDescriptorForValue(java.lang.Object instance, java.lang.Object propertyValue)` Retrieves a PropertyDescriptor for the specified instance and property value
    `` | `static java.lang.String` | `getPropertyForGetter(java.lang.String getterName)` Returns a property name equivalent for the given getter name or null if it is not a valid getter.
    `` | `static java.lang.String` | `getPropertyForGetter(java.lang.String getterName, java.lang.Class returnType)` Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter.
    `` | `static java.lang.String` | `getPropertyForSetter(java.lang.String setterName)` Returns a property name equivalent for the given setter name or null if it is not a valid setter.
    `` | `static java.lang.Object` | `getPropertyOrStaticPropertyOrFieldValue(java.lang.Object obj, java.lang.String name)`
    `` | `static java.lang.Object` | `getPropertyOrStaticPropertyOrFieldValue(org.springframework.beans.BeanWrapper ref, java.lang.Object obj, java.lang.String name)`
    `` | `static java.lang.Class<?>` | `getPropertyType(java.lang.Class<?> clazz, java.lang.String propertyName)` Returns the type of the given property contained within the specified class
    `` | `static java.lang.Object` | `getPropertyValueOfNewInstance(java.lang.Class clazz, java.lang.String propertyName, java.lang.Class<?> propertyType)` Returns the value of the specified property and type from an instance of the specified Grails class
    `` | `static java.lang.Object` | `getPropertyValueOfNewInstance(java.lang.Class<?> clazz, java.lang.String propertyName)` Returns the value of the specified property and type from an instance of the specified Grails class
    `` | `static java.lang.String` | `getSetterName(java.lang.String propertyName)` Retrieves the name of a setter for the specified property name
    `` | `static java.lang.Object` | `getStaticFieldValue(java.lang.Class<?> clazz, java.lang.String name)`
    `` | `static java.lang.Object` | `getStaticPropertyValue(java.lang.Class<?> clazz, java.lang.String name)`
    `` | `static java.lang.Boolean` | `hasBeenEnhancedForFeature(java.lang.Class<?> controllerClass, java.lang.String featureName)` Checks to see if a class is marked with @grails.artefact.Enhanced and if the enhancedFor attribute of the annotation contains a specific feature name
    `` | `static java.lang.Object` | `instantiateFromConfig(groovy.util.ConfigObject config, java.lang.String configKey, java.lang.String defaultClassName)`
    `` | `static java.lang.Object` | `instantiateFromFlatConfig(java.util.Map<java.lang.String, java.lang.Object> flatConfig, java.lang.String configKey, java.lang.String defaultClassName)`
    `` | `static boolean` | `isAssignableOrConvertibleFrom(java.lang.Class<?> clazz, java.lang.Class<?> type)` Returns true if the specified clazz parameter is either the same as, or is a superclass or superinterface of, the specified type parameter.
    `` | `static boolean` | `isClassBelowPackage(java.lang.Class<?> theClass, java.util.List<?> packageList)` Returns whether the specified class is either within one of the specified packages or within a subpackage of one of the packages
    `` | `static boolean` | `isGetter(java.lang.String name, java.lang.Class<?>[] args)` Returns true if the name of the method specified and the number of arguments make it a javabean property getter.
    `` | `static boolean` | `isGetter(java.lang.String name, java.lang.Class returnType, java.lang.Class<?>[] args)` Returns true if the name of the method specified and the number of arguments make it a javabean property getter.
    `` | `static boolean` | `isGroovyAssignableFrom(java.lang.Class<?> leftType, java.lang.Class<?> rightType)`
    `` | `static boolean` | `isMatchBetweenPrimativeAndWrapperTypes(java.lang.Class leftType, java.lang.Class rightType)` Detect if left and right types are matching types.
    `` | `static boolean` | `isPropertyGetter(java.lang.reflect.Method method)` Check whether the specified method is a property getter
    `` | `static boolean` | `isPropertyInherited(java.lang.Class clz, java.lang.String propertyName)` Checks whether the specified property is inherited from a super class
    `` | `protected static boolean` | `isPropertyMethodSuffix(java.lang.String suffix)` This method is used when interrogating a method name to determine if the method represents a property getter.
    `` | `static boolean` | `isPropertyOfType(java.lang.Class<?> clazz, java.lang.String propertyName, java.lang.Class<?> type)` Returns true if the specified property in the specified class is of the specified type
    `` | `static boolean` | `isPublicField(java.lang.Object obj, java.lang.String name)` Work out if the specified object has a public field with the name supplied.
    `` | `static boolean` | `isPublicStatic(java.lang.reflect.Method m)` Determine whether the method is declared public static
    `` | `static boolean` | `isPublicStatic(java.lang.reflect.Field f)` Determine whether the field is declared public static
    `` | `static boolean` | `isSetter(java.lang.String name, java.lang.Class[] args)` Returns true if the name of the method specified and the number of arguments make it a javabean property setter.
    `` | `static boolean` | `isStaticProperty(java.lang.Class clazz, java.lang.String propertyName)`
    `` | `static boolean` | `isVisible(java.lang.Class<?> clazz, java.lang.ClassLoader classLoader)` Check whether the given class is visible in the given ClassLoader.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class java.lang.Object` | `java.lang.Object#wait(long, int), java.lang.Object#wait(long), java.lang.Object#wait(), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()`

- - ### Field Detail

    - #### public static final java.util.Map<java.lang.Class<?>, java.lang.Class<?>> PRIMITIVE_TYPE_COMPATIBLE_CLASSES

  - ### Method Detail

    - #### @java.lang.SuppressWarnings({ "unchecked", "rawtypes" }) public static java.lang.Object[] collectionToObjectArray(java.util.Collection c)

      Convenience method for converting a collection to an Object[]

      Parameters:
        `c` - The collection
      Returns:
        An object array

    - #### @java.lang.SuppressWarnings("rawtypes") public static java.util.Collection createConcreteCollection(java.lang.Class interfaceType)

      Creates a concrete collection for the suppied interface

      Parameters:
        `interfaceType` - The interface
      Returns:
        ArrayList for List, TreeSet for SortedSet, HashSet for Set etc.

    - #### public static org.springframework.cglib.reflect.FastClass fastClass(java.lang.Class superClass)

    - #### public static java.lang.String findPropertyNameForValue(java.lang.Object target, java.lang.Object obj)

      Locates the name of a property for the given value on the target object using Groovy's meta APIs. Note that this method uses the reference so the incorrect result could be returned for two properties that refer to the same reference. Use with caution.

      Parameters:
        `target` - The target
        `obj` - The property value
      Returns:
        The property name or null

    - #### public static java.lang.Class[] getAllInterfaces(java.lang.Object instance)

      Return all interfaces that the given instance implements as array, including ones implemented by superclasses.

      Parameters:
        `instance` - the instance to analyze for interfaces
      Returns:
        all interfaces that the given instance implements as array

    - #### public static java.util.Set<java.lang.Class> getAllInterfacesAsSet(java.lang.Object instance)

      Return all interfaces that the given instance implements as Set, including ones implemented by superclasses.

      Parameters:
        `instance` - the instance to analyze for interfaces
      Returns:
        all interfaces that the given instance implements as Set

    - #### public static java.lang.Class<?>[] getAllInterfacesForClass(java.lang.Class<?> clazz)

      Return all interfaces that the given class implements as array, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
        `clazz` - the class to analyze for interfaces
      Returns:
        all interfaces that the given object implements as array

    - #### public static java.lang.Class<?>[] getAllInterfacesForClass(java.lang.Class<?> clazz, java.lang.ClassLoader classLoader)

      Return all interfaces that the given class implements as array, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
        `clazz` - the class to analyze for interfaces
        `classLoader` - the ClassLoader that the interfaces need to be visible in (may be `null` when accepting all declared interfaces)
      Returns:
        all interfaces that the given object implements as array

    - #### public static java.util.Set<java.lang.Class> getAllInterfacesForClassAsSet(java.lang.Class clazz)

      Return all interfaces that the given class implements as Set, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
        `clazz` - the class to analyze for interfaces
      Returns:
        all interfaces that the given object implements as Set

    - #### public static java.util.Set<java.lang.Class> getAllInterfacesForClassAsSet(java.lang.Class clazz, java.lang.ClassLoader classLoader)

      Return all interfaces that the given class implements as Set, including ones implemented by superclasses.

      If the class itself is an interface, it gets returned as sole interface.

      Parameters:
        `clazz` - the class to analyze for interfaces
        `classLoader` - the ClassLoader that the interfaces need to be visible in (may be `null` when accepting all declared interfaces)
      Returns:
        all interfaces that the given object implements as Set

    - #### public static boolean getBooleanFromMap(java.lang.String key, java.util.Map<?, ?> map)

      Retrieves a boolean value from a Map for the given key

      Parameters:
        `key` - The key that references the boolean value
        `map` - The map to look in
      Returns:
        A boolean value which will be false if the map is null, the map doesn't contain the key or the value is false

    - #### public static boolean getBooleanFromMap(java.lang.String key, java.util.Map<?, ?> map, boolean defaultValue)

      Retrieves a boolean value from a Map for the given key

      Parameters:
        `key` - The key that references the boolean value
        `map` - The map to look in
      Returns:
        A boolean value which will be false if the map is null, the map doesn't contain the key or the value is false

    - #### @java.lang.SuppressWarnings("rawtypes") public static groovy.lang.MetaClass getExpandoMetaClass(java.lang.Class clazz)

    - #### public static java.lang.Object getFieldValue(java.lang.Object obj, java.lang.String name)

      Get the value of a declared field on an object

      Parameters:
        obj
        name
      Returns:
        The object value or null if there is no such field or access problems

    - #### public static java.lang.String getGetterName(java.lang.String propertyName)

      Calculate the name for a getter method to retrieve the specified property

      Parameters:
        propertyName
      Returns:
        The name for the getter method for this property, if it were to exist, i.e. getConstraints

    - #### public static java.beans.PropertyDescriptor[] getPropertiesAssignableToType(java.lang.Class<?> clazz, java.lang.Class<?> propertySuperType)

      Retrieves all the properties of the given class which are assignable to the given type

      Parameters:
        `clazz` - The class to retrieve the properties from
        `propertySuperType` - The type of the properties you wish to retrieve
      Returns:
        An array of PropertyDescriptor instances

    - #### public static java.beans.PropertyDescriptor[] getPropertiesOfType(java.lang.Class<?> clazz, java.lang.Class<?> propertyType)

      Retrieves all the properties of the given class for the given type

      Parameters:
        `clazz` - The class to retrieve the properties from
        `propertyType` - The type of the properties you wish to retrieve
      Returns:
        An array of PropertyDescriptor instances

    - #### public static java.beans.PropertyDescriptor getProperty(java.lang.Class<?> clazz, java.lang.String propertyName, java.lang.Class<?> propertyType)

      Retrieves a property of the given class of the specified name and type

      Parameters:
        `clazz` - The class to retrieve the property from
        `propertyName` - The name of the property
        `propertyType` - The type of the property
      Returns:
        A PropertyDescriptor instance or null if none exists

    - #### public static java.beans.PropertyDescriptor getProperty(java.lang.Class<?> clazz, java.lang.String propertyName)

      Retrieves a property of the given class of the specified name and type

      Parameters:
        `clazz` - The class to retrieve the property from
        `propertyName` - The name of the property
      Returns:
        A PropertyDescriptor instance or null if none exists

    - #### public static java.beans.PropertyDescriptor getPropertyDescriptorForValue(java.lang.Object instance, java.lang.Object propertyValue)

      Retrieves a PropertyDescriptor for the specified instance and property value

      Parameters:
        `instance` - The instance
        `propertyValue` - The value of the property
      Returns:
        The PropertyDescriptor

    - #### public static java.lang.String getPropertyForGetter(java.lang.String getterName)

      Returns a property name equivalent for the given getter name or null if it is not a valid getter. If not null or empty the getter name is assumed to be a valid identifier.

      deprecated:
        Use getPropertyForGetter(String, Class) instead because this method has a defect for "is.." method with Boolean return types.
      Parameters:
        `getterName` - The getter name
      Returns:
        The property name equivalent

    - #### public static java.lang.String getPropertyForGetter(java.lang.String getterName, java.lang.Class returnType)

      Returns a property name equivalent for the given getter name and return type or null if it is not a valid getter. If not null or empty the getter name is assumed to be a valid identifier.

      Parameters:
        `getterName` - The getter name
        `returnType` - The type the method returns
      Returns:
        The property name equivalent

    - #### public static java.lang.String getPropertyForSetter(java.lang.String setterName)

      Returns a property name equivalent for the given setter name or null if it is not a valid setter. If not null or empty the setter name is assumed to be a valid identifier.

      Parameters:
        `setterName` - The setter name, must be null or empty or a valid identifier name
      Returns:
        The property name equivalent

    - #### public static java.lang.Object getPropertyOrStaticPropertyOrFieldValue(java.lang.Object obj, java.lang.String name)

      Looks for a property of the reference instance with a given name.

      If found its value is returned. We follow the Java bean conventions with augmentation for groovy support and static fields/properties. We will therefore match, in this order:

      1. Standard public bean property (with getter or just public field, using normal introspection)
      2. Public static property with getter method
      3. Public static field
      Returns:
        property value or null if no property found

    - #### public static java.lang.Object getPropertyOrStaticPropertyOrFieldValue(org.springframework.beans.BeanWrapper ref, java.lang.Object obj, java.lang.String name)

    - #### public static java.lang.Class<?> getPropertyType(java.lang.Class<?> clazz, java.lang.String propertyName)

      Returns the type of the given property contained within the specified class

      Parameters:
        `clazz` - The class which contains the property
        `propertyName` - The name of the property
      Returns:
        The property type or null if none exists

    - #### @java.lang.SuppressWarnings({ "unchecked", "rawtypes" }) public static java.lang.Object getPropertyValueOfNewInstance(java.lang.Class clazz, java.lang.String propertyName, java.lang.Class<?> propertyType)

      Returns the value of the specified property and type from an instance of the specified Grails class

      Parameters:
        `clazz` - The name of the class which contains the property
        `propertyName` - The property name
        `propertyType` - The property type
      Returns:
        The value of the property or null if none exists

    - #### public static java.lang.Object getPropertyValueOfNewInstance(java.lang.Class<?> clazz, java.lang.String propertyName)

      Returns the value of the specified property and type from an instance of the specified Grails class

      Parameters:
        `clazz` - The name of the class which contains the property
        `propertyName` - The property name
      Returns:
        The value of the property or null if none exists

    - #### public static java.lang.String getSetterName(java.lang.String propertyName)

      Retrieves the name of a setter for the specified property name

      Parameters:
        `propertyName` - The property name
      Returns:
        The setter equivalent

    - #### public static java.lang.Object getStaticFieldValue(java.lang.Class<?> clazz, java.lang.String name)

      Get a static field value.

      Parameters:
        `clazz` - The class to check for static property
        `name` - The field name
      Returns:
        The value if there is one, or null if unset OR there is no such field

    - #### public static java.lang.Object getStaticPropertyValue(java.lang.Class<?> clazz, java.lang.String name)

      Get a static property value, which has a public static getter or is just a public static field.

      Parameters:
        `clazz` - The class to check for static property
        `name` - The property name
      Returns:
        The value if there is one, or null if unset OR there is no such property

    - #### public static java.lang.Boolean hasBeenEnhancedForFeature(java.lang.Class<?> controllerClass, java.lang.String featureName)

      Checks to see if a class is marked with

      grails.artefact.Enhanced:
        and if the enhancedFor attribute of the annotation contains a specific feature name
      Parameters:
        `controllerClass` - The class to inspect
        `featureName` - The name of a feature to check for
      Returns:
        true if controllerClass is marked with Enhanced and the enhancedFor attribute includes featureName, otherwise returns false
      See Also:
        Enhanced
        Enhanced.enhancedFor

    - #### @java.lang.SuppressWarnings("unchecked") public static java.lang.Object instantiateFromConfig(groovy.util.ConfigObject config, java.lang.String configKey, java.lang.String defaultClassName)

    - #### public static java.lang.Object instantiateFromFlatConfig(java.util.Map<java.lang.String, java.lang.Object> flatConfig, java.lang.String configKey, java.lang.String defaultClassName)

    - #### public static boolean isAssignableOrConvertibleFrom(java.lang.Class<?> clazz, java.lang.Class<?> type)

      Returns true if the specified clazz parameter is either the same as, or is a superclass or superinterface of, the specified type parameter. Converts primitive types to compatible class automatically.

      Parameters:
        clazz
        type
      Returns:
        true if the class is a taglib
      See Also:
        java.lang.Class#isAssignableFrom(Class)

    - #### public static boolean isClassBelowPackage(java.lang.Class<?> theClass, java.util.List<?> packageList)

      Returns whether the specified class is either within one of the specified packages or within a subpackage of one of the packages

      Parameters:
        `theClass` - The class
        `packageList` - The list of packages
      Returns:
        true if it is within the list of specified packages

    - #### public static boolean isGetter(java.lang.String name, java.lang.Class<?>[] args)

      Returns true if the name of the method specified and the number of arguments make it a javabean property getter. The name is assumed to be a valid Java method name, that is not verified.

      deprecated:
        use isGetter(String, Class, Class[]) instead because this method has a defect for "is.." method with Boolean return types.
      Parameters:
        `name` - The name of the method
        `args` - The arguments
      Returns:
        true if it is a javabean property getter

    - #### public static boolean isGetter(java.lang.String name, java.lang.Class returnType, java.lang.Class<?>[] args)

      Returns true if the name of the method specified and the number of arguments make it a javabean property getter. The name is assumed to be a valid Java method name, that is not verified.

      Parameters:
        `name` - The name of the method
        `returnType` - The return type of the method
        `args` - The arguments
      Returns:
        true if it is a javabean property getter

    - #### public static boolean isGroovyAssignableFrom(java.lang.Class<?> leftType, java.lang.Class<?> rightType)

      Tests whether or not the left hand type is compatible with the right hand type in Groovy terms, i.e. can the left type be assigned a value of the right hand type in Groovy.

      This handles Java primitive type equivalence and uses isAssignableFrom for all other types, with a bit of magic for native types and polymorphism i.e. Number assigned an int. If either parameter is null an exception is thrown

      Parameters:
        `leftType` - The type of the left hand part of a notional assignment
        `rightType` - The type of the right hand part of a notional assignment
      Returns:
        true if values of the right hand type can be assigned in Groovy to variables of the left hand type.

    - #### @java.lang.SuppressWarnings("rawtypes") public static boolean isMatchBetweenPrimativeAndWrapperTypes(java.lang.Class leftType, java.lang.Class rightType)

      Detect if left and right types are matching types. In particular, test if one is a primitive type and the other is the corresponding Java wrapper type. Primitive and wrapper classes may be passed to either arguments.

      Parameters:
        leftType
        rightType
      Returns:
        true if one of the classes is a native type and the other the object representation of the same native type

    - #### public static boolean isPropertyGetter(java.lang.reflect.Method method)

      Check whether the specified method is a property getter

      Parameters:
        `method` - The method
      Returns:
        true if the method is a property getter

    - #### @java.lang.SuppressWarnings("rawtypes") public static boolean isPropertyInherited(java.lang.Class clz, java.lang.String propertyName)

      Checks whether the specified property is inherited from a super class

      Parameters:
        `clz` - The class to check
        `propertyName` - The property name
      Returns:
        true if the property is inherited

    - #### protected static boolean isPropertyMethodSuffix(java.lang.String suffix)

      This method is used when interrogating a method name to determine if the method represents a property getter. For example, if a method is named `getSomeProperty`, the value `"SomeProperty"` could be passed to this method to determine that the method should be considered a property getter. Examples of suffixes that would be considered property getters:

      - SomeProperty
      - Word
      - aProperty
      - S
      - X567
      Examples of suffixes that would not be considered property getters:
      - someProperty
      - word
      - s
      - x567
      - 2other
      - 5
      A suffix like `prop` from a method `getprop()` is not recognized as a valid suffix. However Groovy will recognize such a method as a property getter but only if a method `getProp()` or a property `prop` does not also exist. The Java Beans specification is unclear on how to treat such method names, it only says that "by default" the suffix will start with a capital letter because of the camel case style usually used. (See the JavaBeans API specification sections 8.3 and 8.8.) This method assumes that all characters in the name are valid Java identifier letters.
      Parameters:
        `suffix` - The suffix to inspect
      Returns:
        true if suffix indicates a property name

    - #### public static boolean isPropertyOfType(java.lang.Class<?> clazz, java.lang.String propertyName, java.lang.Class<?> type)

      Returns true if the specified property in the specified class is of the specified type

      Parameters:
        `clazz` - The class which contains the property
        `propertyName` - The property name
        `type` - The type to check
      Returns:
        A boolean value

    - #### public static boolean isPublicField(java.lang.Object obj, java.lang.String name)

      Work out if the specified object has a public field with the name supplied.

      Parameters:
        obj
        name
      Returns:
        true if a public field with the name exists

    - #### public static boolean isPublicStatic(java.lang.reflect.Method m)

      Determine whether the method is declared public static

      Parameters:
        m
      Returns:
        true if the method is declared public static

    - #### public static boolean isPublicStatic(java.lang.reflect.Field f)

      Determine whether the field is declared public static

      Parameters:
        f
      Returns:
        true if the field is declared public static

    - #### @java.lang.SuppressWarnings("rawtypes") public static boolean isSetter(java.lang.String name, java.lang.Class[] args)

      Returns true if the name of the method specified and the number of arguments make it a javabean property setter. The name is assumed to be a valid Java method name, that is not verified.

      Parameters:
        `name` - The name of the method
        `args` - The arguments
      Returns:
        true if it is a javabean property setter

    - #### @java.lang.SuppressWarnings("rawtypes") public static boolean isStaticProperty(java.lang.Class clazz, java.lang.String propertyName)

      Work out if the specified property is readable and static. Java introspection does not recognize this concept of static properties but Groovy does. We also consider public static fields as static properties with no getters/setters

      Parameters:
        `clazz` - The class to check for static property
        `propertyName` - The property name
      Returns:
        true if the property with name propertyName has a static getter method

    - #### public static boolean isVisible(java.lang.Class<?> clazz, java.lang.ClassLoader classLoader)

      Check whether the given class is visible in the given ClassLoader.

      Parameters:
        `clazz` - the class to check (typically an interface)
        `classLoader` - the ClassLoader to check against (may be `null`, in which case this method will always return `true`)