# Class IntrospectionUtils

java.lang.Object
org.apache.tomcat.util.IntrospectionUtils

public final class IntrospectionUtils extends Object
Utils for introspection and reflection

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static interface`
  `IntrospectionUtils.PropertySource`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `IntrospectionUtils()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `static Object`
  `callMethod1(Object target, String methodN, Object param1, String typeParam1, ClassLoader cl)`
  `static Object`
  `callMethodN(Object target, String methodN, Object[] params, Class<?>[] typeParams)`
  `static String`
  `capitalize(String name)`
  Reverse of Introspector.decapitalize.
  `static void`
  `clear()`
  `static Object`
  `convert(String object, Class<?> paramType)`
  `static String`
  `escape(String s)`
  `static Method`
  `findMethod(Class<?> c, String name, Class<?>[] params)`
  `static Method[]`
  `findMethods(Class<?> c)`
  `static Object`
  `getProperty(Object o, String name)`
  `static boolean`
  `isInstance(Class<?> clazz, String type)`
  Checks to see if the specified class is an instance of or assignable from the specified type.
  `static String`
  `replaceProperties(String value, Hashtable<Object,Object> staticProp, IntrospectionUtils.PropertySource[] dynamicProp, ClassLoader classLoader)`
  Replaces ${NAME} in the value with the value of the property 'NAME'.
  `static boolean`
  `setProperty(Object o, String name, String value)`
  Find a method with the right name If found, call the method ( if param is int or boolean we'll convert value to the right type before) - that means you can have setDebug(1).
  `static boolean`
  `setProperty(Object o, String name, String value, boolean invokeSetProperty)`
  `static boolean`
  `setProperty(Object o, String name, String value, boolean invokeSetProperty, StringBuilder actualMethod)`

  ### Methods inherited from class Object

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

- ## Constructor Details

  - ### IntrospectionUtils

    public IntrospectionUtils()

- ## Method Details

  - ### setProperty

    public static boolean setProperty(Object o, String name, String value)
    Find a method with the right name If found, call the method ( if param is int or boolean we'll convert value to the right type before) - that means you can have setDebug(1).
    Parameters:
      `o` - The object to set a property on
      `name` - The property name
      `value` - The property value
    Returns:
      `true` if operation was successful

  - ### setProperty

    public static boolean setProperty(Object o, String name, String value, boolean invokeSetProperty)

  - ### setProperty

    public static boolean setProperty(Object o, String name, String value, boolean invokeSetProperty, StringBuilder actualMethod)

  - ### escape

    public static String escape(String s)
    Parameters:
      `s` - the input string
    Returns:
      escaped string, per Java rule

  - ### getProperty

    public static Object getProperty(Object o, String name)

  - ### replaceProperties

    public static String replaceProperties(String value, Hashtable<Object,Object> staticProp, IntrospectionUtils.PropertySource[] dynamicProp, ClassLoader classLoader)
    Replaces ${NAME} in the value with the value of the property 'NAME'. Replaces ${NAME:DEFAULT} with the value of the property 'NAME:DEFAULT', if the property 'NAME:DEFAULT' is not set, the expression is replaced with the value of the property 'NAME', if the property 'NAME' is not set, the expression is replaced with 'DEFAULT'. If the property is not set and there is no default the value will be returned unmodified.
    Parameters:
      `value` - The value
      `staticProp` - Replacement properties
      `dynamicProp` - Replacement properties
      `classLoader` - Class loader associated with the code requesting the property
    Returns:
      the replacement value

  - ### capitalize

    public static String capitalize(String name)
    Reverse of Introspector.decapitalize.
    Parameters:
      `name` - The name
    Returns:
      the capitalized string

  - ### clear

    public static void clear()

  - ### findMethods

    public static Method[] findMethods(Class<?> c)

  - ### findMethod

    public static Method findMethod(Class<?> c, String name, Class<?>[] params)

  - ### callMethod1

    public static Object callMethod1(Object target, String methodN, Object param1, String typeParam1, ClassLoader cl) throws Exception
    Throws:
      `Exception`

  - ### callMethodN

    public static Object callMethodN(Object target, String methodN, Object[] params, Class<?>[] typeParams) throws Exception
    Throws:
      `Exception`

  - ### convert

    public static Object convert(String object, Class<?> paramType)

  - ### isInstance

    public static boolean isInstance(Class<?> clazz, String type)
    Checks to see if the specified class is an instance of or assignable from the specified type. The class `clazz`, all its superclasses, interfaces and those superinterfaces are tested for a match against the type name `type`. This is similar to `instanceof` or `Class.isAssignableFrom(Class)` except that the target type will not be resolved into a Class object, which provides some security and memory benefits.
    Parameters:
      `clazz` - The class to test for a match.
      `type` - The name of the type that `clazz` must be.
    Returns:
      `true` if the `clazz` tested is an instance of the specified `type`, `false` otherwise.