From Wikibooks, open books for an open world
We start with basic transfer object:
|
Code listing 10.1: DummyTo.java
package com.test;
public class DummyTo {
private String name;
private String address;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public DummyTo(String name, String address) {
this.name = name;
this.address = address;
}
public DummyTo() {
this.name = new String();
this.address = new String();
}
public String toString(String appendBefore) {
return appendBefore + " " + name + ", " + address;
}
}
|
Following is the example for invoking method from the above mentioned to dynamically.
Code is self explanatory.
|
Code listing 10.2: ReflectTest.java
package com.test;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class ReflectTest {
public static void main(String[] args) {
try {
Class<?> dummyClass = Class.forName("com.test.DummyTo");
// parameter types for methods
Class<?>[] partypes = new Class[]{String.class};
// Create method object. methodname and parameter types
Method meth = dummyClass.getMethod("toString", partypes);
// parameter types for constructor
Class<?>[] constrpartypes = new Class[]{String.class, String.class};
//Create constructor object. parameter types
Constructor<?> constr = dummyClass.getConstructor(constrpartypes);
// create instance
Object dummyto = constr.newInstance(new Object[]{"Java Programmer", "India"});
// Arguments to be passed into method
Object[] arglist = new Object[]{"I am"};
// invoke method!!
String output = (String) meth.invoke(dummyto, arglist);
System.out.println(output);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} 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();
} catch (InstantiationException e) {
e.printStackTrace();
}
}
}
|
|
|
Console for Code listing 10.2
I am Java Programmer, India
|
|
Conclusion: Above examples demonstrate the invocation of method dynamically using reflection.
|
To do: Add some exercises like the ones in Variables
|