In this
tutorial we will see how we can call a private function of another class. So
lets take an example (not so serious example this time). Say we have a class
called SpiderMan that has private variable name
and one private method called getMyName that will accept one String variable
(this is basically to show how to pass arguments while calling such function)
and it will return value of private variable name. So
following is our class.
package com.techcielo.corejava.reflection;
public class SpiderMan {
private String name="Peter
Parker";
private String getMyName(String
visitorName){
System.out.println("Who's
knocking?...Its.."+visitorName);
return name;
}
}
|
Now
lets have another class called GreenGoblic that wants to identify what to find
who is SpiderMan so it will use reflection API. It
will first get Class object for SpiderMan class and then get instance of Method
class by using getDeclaredMethod function on this Class object. Second
argument of this function will be argument that we will pass to the function.
This will take care of function over loading. Once we have access to this
Method class we will invoke function invoke on this instance. We can pass list of
objects that we want to pass to function that we want to execute. So following
will be our class.
package com.techcielo.corejava.reflection;
import java.lang.reflect.Method;
public class GreenGoblin {
public static void main(String[]
args) {
try
{
Object
obj = Class.forName("com.techcielo.corejava.reflection.SpiderMan").newInstance();
Method
meth = obj.getClass().getDeclaredMethod("getMyName", String.class);
meth.setAccessible(true);
String
name = (String) meth.invoke(obj, "Green Goblin");
System.out.println("Got you
Spidy...you are..."+name);
}
catch (Exception e) {
e.printStackTrace();
}
}
}
|
When we execute this class following is what we will get…
Who's knocking?...Its..Green Goblin
Got you Spidy...you are...Peter Parker
|