ReflectUtil (Apache Ant API)
Date: 2015-06-29

org.apache.tools.ant.util

## Class ReflectUtil

- java.lang.Object
- - org.apache.tools.ant.util.ReflectUtil

-     public class ReflectUtil
      extends java.lang.Object

  Utility class to handle reflection on java objects. The class contains static methods to call reflection methods, catch any exceptions, converting them to BuildExceptions.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `static java.lang.Object` | `getField(java.lang.Object obj, java.lang.String fieldName)` Get the value of a field in an object.
    `static java.lang.Object` | `invoke(java.lang.Object obj, java.lang.String methodName)` Call a method on the object with no parameters.
    `static java.lang.Object` | `invoke(java.lang.Object obj, java.lang.String methodName, java.lang.Class<?> argType, java.lang.Object arg)` Call a method on the object with one argument.
    `static java.lang.Object` | `invoke(java.lang.Object obj, java.lang.String methodName, java.lang.Class<?> argType1, java.lang.Object arg1, java.lang.Class<?> argType2, java.lang.Object arg2)` Call a method on the object with two argument.
    `static java.lang.Object` | `invokeStatic(java.lang.Object obj, java.lang.String methodName)` Call a method on the object with no parameters.
    `static <T> T` | `newInstance(java.lang.Class<T> ofClass, java.lang.Class<?>[] argTypes, java.lang.Object[] args)` Create an instance of a class using the constructor matching the given arguments.
    `static boolean` | `respondsTo(java.lang.Object o, java.lang.String methodName)` A method to test if an object responds to a given message (method call)
    `static void` | `throwBuildException(java.lang.Exception t)` A method to convert an invocationTargetException to a buildexception and throw it.
    `static BuildException` | `toBuildException(java.lang.Exception t)` A method to convert an invocationTargetException to a buildexception.

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

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

- - ### Method Detail

    - #### newInstance

          public static <T> T newInstance(java.lang.Class<T> ofClass,
                          java.lang.Class<?>[] argTypes,
                          java.lang.Object[] args)

      Create an instance of a class using the constructor matching the given arguments.
      Since:
        Ant 1.8.0

    - #### invoke

          public static java.lang.Object invoke(java.lang.Object obj,
                                java.lang.String methodName)

      Call a method on the object with no parameters.
      Parameters:
        `obj` - the object to invoke the method on.
        `methodName` - the name of the method to call
      Returns:
        the object returned by the method

    - #### invokeStatic

          public static java.lang.Object invokeStatic(java.lang.Object obj,
                                      java.lang.String methodName)

      Call a method on the object with no parameters. Note: Unlike the invoke method above, this calls class or static methods, not instance methods.
      Parameters:
        `obj` - the object to invoke the method on.
        `methodName` - the name of the method to call
      Returns:
        the object returned by the method

    - #### invoke

          public static java.lang.Object invoke(java.lang.Object obj,
                                java.lang.String methodName,
                                java.lang.Class<?> argType,
                                java.lang.Object arg)

      Call a method on the object with one argument.
      Parameters:
        `obj` - the object to invoke the method on.
        `methodName` - the name of the method to call
        `argType` - the type of argument.
        `arg` - the value of the argument.
      Returns:
        the object returned by the method

    - #### invoke

          public static java.lang.Object invoke(java.lang.Object obj,
                                java.lang.String methodName,
                                java.lang.Class<?> argType1,
                                java.lang.Object arg1,
                                java.lang.Class<?> argType2,
                                java.lang.Object arg2)

      Call a method on the object with two argument.
      Parameters:
        `obj` - the object to invoke the method on.
        `methodName` - the name of the method to call
        `argType1` - the type of the first argument.
        `arg1` - the value of the first argument.
        `argType2` - the type of the second argument.
        `arg2` - the value of the second argument.
      Returns:
        the object returned by the method

    - #### getField

          public static java.lang.Object getField(java.lang.Object obj,
                                  java.lang.String fieldName)
                                           throws BuildException

      Get the value of a field in an object.
      Parameters:
        `obj` - the object to look at.
        `fieldName` - the name of the field in the object.
      Returns:
        the value of the field.
      Throws:
        `BuildException` - if there is an error.

    - #### throwBuildException

          public static void throwBuildException(java.lang.Exception t)
                                          throws BuildException

      A method to convert an invocationTargetException to a buildexception and throw it.
      Parameters:
        `t` - the invocation target exception.
      Throws:
        `BuildException` - the converted exception.

    - #### toBuildException

          public static BuildException toBuildException(java.lang.Exception t)

      A method to convert an invocationTargetException to a buildexception.
      Parameters:
        `t` - the invocation target exception.
      Returns:
        the converted exception.
      Since:
        ant 1.7.1

    - #### respondsTo

          public static boolean respondsTo(java.lang.Object o,
                           java.lang.String methodName)
                                    throws BuildException

      A method to test if an object responds to a given message (method call)
      Parameters:
        `o` - the object
        `methodName` - the method to check for
      Returns:
        true if the object has the method.
      Throws:
        `BuildException` - if there is a problem.