Skip to main content

Invoking Class Methods using Reflection in Java

Sometimes we want the code should be dynamic and we even want to call the class methods dynamically. This article describes on how we can invoke the class methods dynamically using variables.

To achieve the above operation we use the concept of Reflection in Java. Here in this article i am using 2 java files, Client.java and Server.java. Server.java will be the class that we want to load dynamically and Client.java will have the code responsible for calling the Server class dynamically.
Server.java:
Client.java:
import java.lang.reflect.Method;

public class Client {
  public static void main(String args[]) {
     try {
        Class dynamicClass = null;
        dynamicClass = Class.forName("Server");

        //Loading methods parameters
        Class[] parameter=new Class[1];
        parameter[0]=int.class;

        Object iClass = dynamicClass.newInstance();

        //Loading and Invoking setPort method with argument passed 
        Method thisMethod = dynamicClass.getMethod("setPort", parameter);
        thisMethod.invoke(iClass, 6000);

        //Loading and invoking getPort method withour argument passed, this method also returns int value
        Method thisMethod1 = dynamicClass.getMethod("getPort", null);
  int data = (Integer) thisMethod1.invoke(iClass);

        System.out.println(data); 

     } catch (ClassNotFoundException e) {
    e.printStackTrace();
     } catch (SecurityException e) {
          e.printStackTrace();
     } catch (InstantiationException e) {
          e.printStackTrace();
     } catch (IllegalAccessException e) {
          e.printStackTrace();
     } catch (IllegalArgumentException e) {
          e.printStackTrace();
     } catch (Exception e) {
          e.printStackTrace();
     }
  }
}
public class Server {
   private int PORT = 0;

   public Server() {
 System.out.println("Inside Server Class");
   }

   public void setPort(int portno) {
       this.PORT = portno;
   }

   public int getPort() {
       return this.PORT;
   }
}
This class is basically an bean structure having getter and setter methods.

Here if you see i am initially loading the Server.class dynamially, than i am calling setPort() method and passing 6000 value as an argument. Than i am reading the port value set.

Comments

Popular posts from this blog

Indian Education System : Let's shape it

Good advice is always certain to be ignored, but that's no reason not to give it.                                                                                        By Agatha Christie   This is one of the things that I wanted to write from long back and per my opinion it should be matter of at most important for any educated person of India. Today in this article I would like  focus on reminding people about the importance of education and educational departments  no matter those are government related or privately held. Whatever we are to...

Google and Facebook's Data Center

I think Capacity wise Facebook is the good place to start as no other website has experienced kind of volume and traffic that Facebook has witnessed in the recent past. As you have not specified whether You want to know more about the infrastructure, security or you are interested in their operating model, staff size and remote site management? I would go with the general details. Facebook has multiple data centers around the world and the reason behind this is a common knowledge i.e huge volume of the data that FB process on daily basis. Facebook is currently the world’s most popular web site, with more than 1 trillion page views each month, according to metrics from Google’s DoubleClick service. Facebook currently accounts for about 9 percent of all Internet traffic, slightly more than Google, according to HitWise. This is the first data center of the Facebook in Prineville FB realized that they need many data centers in different locations to support the performance demand of...

The Bourne Betrayal | Book Review

Novel by Eric Van Lustbader and Robert Ludlum I like all Robert Ludlum’s novels including those which are written by Evan Lastbadder. To me his novels have taken fiction to the next level. During my way back to Hyderabad from my last summer trip to hometown I bought paperback version of “The Bourne Betryal”. This novel was full of Lastbadder’s style of writing than Robert Ludlum’s one.  I took almost 6 months to complete it. This novel has something different to offer actually. Plot is exciting but the story is not very accelerating. Jason bourn and Martin Lindros, When martin Lindros decided to come back in the field operations with the aim to destroy Fadi and When Martin is out the track , Jason is the only help possible in the situation. Story takes you through various struggle of Jason to bring Martin back home. There are few things where author has not even paid any attention for example how does an ordinary Pakistani Waiter will have that much of information   Towa...