org.apache.commons.jexl3.internal.introspection

## Class Introspector

- java.lang.Object
- - org.apache.commons.jexl3.internal.introspection.Introspector

-     public final class Introspector
      extends Object

  This basic function of this class is to return a Method object for a particular class given the name of a method and the parameters to the method in the form of an Object[].

  The first time the Introspector sees a class it creates a class method map for the class in question. Basically the class method map is a Hashtable where Method objects are keyed by the aggregation of the method name and the array of parameters classes. This mapping is performed for all the public methods of a class and stored.

  Since:
    1.0

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `Introspector(org.apache.commons.logging.Log log, ClassLoader cloader)` Create the introspector.
    `Introspector(org.apache.commons.logging.Log log, ClassLoader cloader, Permissions perms)` Create the introspector.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Class<?>` | `getClassByName(String className)` Gets a class by name through this introspector class loader.
    `Constructor<?>` | `getConstructor(Class<?> c, MethodKey key)` Gets the constructor defined by the `MethodKey`.
    `Constructor<?>` | `getConstructor(MethodKey key)` Gets the constructor defined by the `MethodKey`.
    `Field` | `getField(Class<?> c, String key)` Gets the field named by `key` for the class `c`.
    `String[]` | `getFieldNames(Class<?> c)` Gets the array of accessible field names known for a given class.
    `ClassLoader` | `getLoader()` Gets the class loader used by this introspector.
    `Method` | `getMethod(Class<?> c, MethodKey key)` Gets the method defined by the `MethodKey` for the class `c`.
    `Method` | `getMethod(Class<?> c, String name, Object[] params)` Gets a method defined by a class, a name and a set of parameters.
    `String[]` | `getMethodNames(Class<?> c)` Gets the array of accessible methods names known for a given class.
    `Method[]` | `getMethods(Class<?> c, String methodName)` Gets the array of accessible method known for a given class.
    `void` | `setLoader(ClassLoader cloader)` Sets the class loader used to solve constructors.

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

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

- - ### Constructor Detail

    - #### Introspector

          public Introspector(org.apache.commons.logging.Log log,
                              ClassLoader cloader)

      Create the introspector.
      Parameters:
        `log` - the logger to use
        `cloader` - the class loader

    - #### Introspector

          public Introspector(org.apache.commons.logging.Log log,
                              ClassLoader cloader,
                              Permissions perms)

      Create the introspector.
      Parameters:
        `log` - the logger to use
        `cloader` - the class loader
        `perms` - the permissions

  - ### Method Detail

    - #### getClassByName

          public Class<?> getClassByName(String className)

      Gets a class by name through this introspector class loader.
      Parameters:
        `className` - the class name
      Returns:
        the class instance or null if it could not be found

    - #### getMethod

          public Method getMethod(Class<?> c,
                                  String name,
                                  Object[] params)

      Gets a method defined by a class, a name and a set of parameters.
      Parameters:
        `c` - the class
        `name` - the method name
        `params` - the method parameters
      Returns:
        the desired method object
      Throws:
        `MethodKey.AmbiguousException` - if no unambiguous method could be found through introspection

    - #### getMethod

          public Method getMethod(Class<?> c,
                                  MethodKey key)

      Gets the method defined by the `MethodKey` for the class `c`.
      Parameters:
        `c` - Class in which the method search is taking place
        `key` - Key of the method being searched for
      Returns:
        The desired method object
      Throws:
        `MethodKey.AmbiguousException` - if no unambiguous method could be found through introspection

    - #### getField

          public Field getField(Class<?> c,
                                String key)

      Gets the field named by `key` for the class `c`.
      Parameters:
        `c` - Class in which the field search is taking place
        `key` - Name of the field being searched for
      Returns:
        the desired field or null if it does not exist or is not accessible

    - #### getFieldNames

          public String[] getFieldNames(Class<?> c)

      Gets the array of accessible field names known for a given class.
      Parameters:
        `c` - the class
      Returns:
        the class field names

    - #### getMethodNames

          public String[] getMethodNames(Class<?> c)

      Gets the array of accessible methods names known for a given class.
      Parameters:
        `c` - the class
      Returns:
        the class method names

    - #### getMethods

          public Method[] getMethods(Class<?> c,
                                     String methodName)

      Gets the array of accessible method known for a given class.
      Parameters:
        `c` - the class
        `methodName` - the method name
      Returns:
        the array of methods (null or not empty)

    - #### getConstructor

          public Constructor<?> getConstructor(MethodKey key)

      Gets the constructor defined by the `MethodKey`.
      Parameters:
        `key` - Key of the constructor being searched for
      Returns:
        The desired constructor object or null if no unambiguous constructor could be found through introspection.

    - #### getConstructor

          public Constructor<?> getConstructor(Class<?> c,
                                               MethodKey key)

      Gets the constructor defined by the `MethodKey`.
      Parameters:
        `c` - the class we want to instantiate
        `key` - Key of the constructor being searched for
      Returns:
        The desired constructor object or null if no unambiguous constructor could be found through introspection.

    - #### setLoader

          public void setLoader(ClassLoader cloader)

      Sets the class loader used to solve constructors.

      Also cleans the constructors and methods caches.

      Parameters:
        `cloader` - the class loader; if null, use this instance class loader

    - #### getLoader

          public ClassLoader getLoader()

      Gets the class loader used by this introspector.
      Returns:
        the class loader

Copyright © 2001–2021 The Apache Software Foundation. All rights reserved.