Search This Blog

Thursday, 14 August 2014

Get Constructor of a class you don't know about and Call it - JAVA

This program shows how to Get Constructor of a class you don't know about and Call it in Java.

AnotherClass.java

public class AnotherClass {
 
 public AnotherClass(int no) {
  x = no;
  System.out.println("Constructor of Another Class called and the value of x is " + x);
 }
 
 public int x;

 public int getX() {
  return x;
 }
}

MainClass.java

import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;

/**
 * Get Class name in Java - Reflection API
 *
 * How to get class name when you don't know what the class is in Java
 */
public class MainClass {
 
 public static void main(String[] args){
  AnotherClass obj = new AnotherClass(1); // setting value of x = 1
  
  Class c = obj.getClass();
  
  Constructor[] constructorArray = c.getConstructors(); // Returns array of all constructors of AnotherClass
  System.out.println("Constructors of " + c.getName() + " class are " + constructorArray.length);
  //Get the constructor from the constructorArray
  Constructor constructor = constructorArray[0];
  //since we don't know about the data type of obj so we'll create an object's object
  Object object = null;
  try {
          //Invoke Constructor
object = constructor.newInstance(10);
  } catch (InstantiationException e) {
   e.printStackTrace();
  } catch (IllegalAccessException e) {
   e.printStackTrace();
  } catch (IllegalArgumentException e) {
   e.printStackTrace();
  } catch (InvocationTargetException e) {
   e.printStackTrace();
  }
 }
}

No comments:

Post a Comment