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

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...

Mobile Message Organizer

Got a basic requirement that i think every mobile should have, all the mail clients have this facility and i dont see any big difficulties on this other than the storage problem which is not a problem at all as we got GB of spaces in our memory cards. Well i am talking about the organizing the messages in Inbox , categorization of messages. Suppose i want to store all the messages from one of my friend say A in a folder called Personal, my existing mobile device Nokai E71 doesn't have this feature inbuilt (Ofcourse if you want you can make a folder and move the messages manually but here i am talking about the idea of automating this procedure). Only thing we need to do is , we have to store the rules in separate location , rules will be defined by the user and then device will follow these rules.There are no or very less software available which satisfy this requirement for mobile device.this is so simple but basic requirement as per the end user. I am going to make this one ...

Time to keep secure your Account

Now a days every one is crazy about social networking and visiting orkut and facebook is becoming an important part of our daily life.This has become as important as food for life, even for some folks social networking tops the chart in priority list.Not everything is wrong with this, infact some of the things that social networking sites brings are really nice like they help us to staying in touch with family and friends. But if you are sharing your personal information and photographs then eventually security concerns comes in the fore front of social networking world. With my limited understanding, I have come up with following points that you have to keep in your mind before creating the social networking account 1. Don't expose all your information in social networking site if not in the web.     Any one can use these information against you, for example your     date of birth ,college name,place of birth or any thing     will be more than s...