This program shows how to invoke methods through reflection : Method « Reflection « Java






This program shows how to invoke methods through reflection

     
/*
 This program is a part of the companion code for Core Java 8th ed.
 (http://horstmann.com/corejava)

 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
 the Free Software Foundation, either version 3 of the License, or
 (at your option) any later version.

 This program is distributed in the hope that it will be useful,
 but WITHOUT ANY WARRANTY; without even the implied warranty of
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 GNU General Public License for more details.

 You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

import java.lang.reflect.Method;

/**
 * This program shows how to invoke methods through reflection.
 * 
 * @version 1.1 2004-02-21
 * @author Cay Horstmann
 */
public class MethodPointerTest {
  public static void main(String[] args) throws Exception {
    // get method pointers to the square and sqrt methods
    Method square = MethodPointerTest.class.getMethod("square", double.class);
    Method sqrt = Math.class.getMethod("sqrt", double.class);

    // print tables of x- and y-values

    printTable(1, 10, 10, square);
    printTable(1, 10, 10, sqrt);
  }

  /**
   * Returns the square of a number
   * 
   * @param x
   *          a number
   * @return x squared
   */
  public static double square(double x) {
    return x * x;
  }

  /**
   * Prints a table with x- and y-values for a method
   * 
   * @param from
   *          the lower bound for the x-values
   * @param to
   *          the upper bound for the x-values
   * @param n
   *          the number of rows in the table
   * @param f
   *          a method with a double parameter and double return value
   */
  public static void printTable(double from, double to, int n, Method f) {
    // print out the method as table header
    System.out.println(f);

    double dx = (to - from) / (n - 1);

    for (double x = from; x <= to; x += dx) {
      try {
        double y = (Double) f.invoke(null, x);
        System.out.printf("%10.4f | %10.4f%n", x, y);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }
}

   
    
    
    
    
  








Related examples in the same category

1.Method Reflection
2.Load a method on the fly
3.Demonstrates how to get specific method information
4.Class Reflection: show methodsClass Reflection: show methods
5.Object Reflection: invoke methodsObject Reflection: invoke methods
6.To get the calling method
7.Get the class name in a static method
8.Call a method dynamically (Reflection)
9.Call a class method with 2 arguments
10.Using reflection to show all the methods of a class,
11.Invoke method through Java Reflection APIInvoke method through Java Reflection API
12.Get a given method, and invoke it
13.Show loading a class and finding and calling its Main methodShow loading a class and finding and calling its Main method
14.Demonstrates dynamic usage of methods
15.Demonstration of various method invocation issues
16.An invocation handler that counts the number of calls for all methods in the target class.
17.Method modifiers: isSynthetic(), m.isVarArgs(), m.isBridge()
18.Call private method
19.Get the methods of a class object
20.Invoke a method using Method class
21.The next example calls a class method with 2 arguments:
22.Getting the Methods of a Class Object: By obtaining a list of all declared methods
23.Getting the Methods of a Class Object: By obtaining a list of all public methods, both declared and inherited.
24.Getting the Methods of a Class Object: By obtaining a particular Method object.
25.Get the current method name
26.Get the current method name With JDK1.5
27.Get all declared methods from a class
28.Make methods that have unspecified number of parameters:pass an array of Objects
29.Get all methods including the inherited method. Using the getMethods(), we can only access public methods.
30.Fetches all methods of all access types from the supplied class and super classes
31.Find a Method on the supplied class with the supplied name and no parameters
32.Find a Method on the supplied class with the supplied name and parameter types
33.Checks whether the specified class contains a method matching the specified name.
34.Call a member function to get the value
35.Call a method of an object
36.Call a static method of a class with reflection
37.Returns method with the specified name
38.Find method
39.Invokes a method, masking with a runtime exception all the exceptions.
40.Sorts methods according to their name, number of parameters, and parameter types.
41.Adds all methods (from Class.getMethodCalls) to the list
42.Find method 2
43.Find Declared Methods
44.Get Static Method
45.Search Method
46.Convert method to property name.
47.Get all methods of a class.
48.Method signature
49.Gets a String array of all method calls for the given class
50.Convert the Method to a Java Code String (arguments are replaced by the simple types)