Pin It

How to invoke a method using Method class in Reflection API of Java ?

Program to demonstrate method invocation in Java using Method class in Reflection API

package com.hubberspot.example;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

class Operations {

   public int add(int num1, int num2) {
 return num1 + num2;
   }

   public int subtract(int num1, int num2) {
 return num1 - num2;
   }

   public int multiply(int num1, int num2) {
 return num1 * num2;
   }

   public double division(int num1, int num2) {
 return num1 / num2;
   }

}

public class MethodInvocation {


   public static void main(String[] args) {

 // Creating Object of Operations
 Operations operation = new Operations();
 // Getting the Class associated with Operations
 Class classOperations= operation.getClass();

   try {
  // Calling getMethod method on classOperations
  // by passing a string which specifies method
  // name and two instance of Class which denotes
  // an int parameter type
  Method add = classOperations.getMethod("add",new Class[] {int.class,int.class});
  // calling the invoke method over the Method
  // by passing it the object of class to 
  // which the method is going to be invoked
  // alongwith an array of Object which specified 
  // the parameters 
  Object result = add.invoke(operation,new Object[] { 20 , 20});
  System.out.print("Calling "+add.getName()+
   " method and result is : ");
  System.out.println(result.toString());

  // Calling getMethod method on classOperations
  // by passing a string which specifies method
  // name and two instance of Class which denotes
  // an int parameter type
  Method subtract = classOperations.getMethod("subtract",new Class[] {int.class,int.class});
  // calling the invoke method over the Method
  // by passing it the object of class to 
  // which the method is going to be invoked
  // alongwith an array of Object which specified 
  // the parameters
  result = subtract.invoke(operation, 
   new Object[] { 30 , 20});

  System.out.print("Calling "+subtract.getName()+ " method and result is : ");

  System.out.println(result.toString());

  // Calling getMethod method on classOperations
  // by passing a string which specifies method
  // name and two instance of Class which denotes
  // an int parameter type
  Method multiply = classOperations.getMethod("multiply",new Class[] {int.class,int.class});

  // calling the invoke method over the Method
  // by passing it the object of class to 
  // which the method is going to be invoked
  // alongwith an array of Object which specified 
  // the parameters
  result = multiply.invoke(operation, new Object[] { 10 , 10});

  System.out.print("Calling "+multiply.getName()+ " method and result is : ");

  System.out.println(result.toString());

  // Calling getMethod method on classOperations
  // by passing a string which specifies method
  // name and two instance of Class which denotes
  // an int parameter type
  Method division = classOperations.getMethod("division", new Class[] {int.class,int.class});

  // calling the invoke method over the Method
  // by passing it the object of class to 
  // which the method is going to be invoked
  // alongwith an array of Object which specified 
  // the parameters
  result = division.invoke(operation, new Object[] { 20 , 10});

  System.out.print("Calling "+division.getName()+ " method and result is : ");

  System.out.println(result.toString());

  } catch (SecurityException e) {

  e.printStackTrace();

 } catch (NoSuchMethodException e) {

  e.printStackTrace();

 } catch (IllegalArgumentException e) {

  e.printStackTrace();

 } catch (IllegalAccessException e) {

  e.printStackTrace();

 } catch (InvocationTargetException e) {

  e.printStackTrace();

 }


   }

}




Output of the program :



Please Give Us Your 1 Minute In Sharing This Post!
SOCIALIZE IT →
FOLLOW US →
SHARE IT →
Related Posts Plugin for WordPress, Blogger...

Post your related queries below ...

comments powered by Disqus
Powered by Blogger.
 
© 2012 Learn Java by Examples Template by Hubber Spot