File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes Java in General and the fly likes Java reflection Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Java reflection" Watch "Java reflection" New topic

Java reflection

Ranadhir Nag
Ranch Hand

Joined: Mar 09, 2006
Posts: 138
I need to check a property in the javax.faces.component.html.HtmlInputText.
If i do it in the following manner,I get things fine:
if(comp.getClass().getName().equalsIgnoreCase("javax.faces.component.html.HtmlInputText")) {
String getter=((javax.faces.component.html.HtmlInputText)comp).getOnfocus();
if(getter!=null) {



But if i invoke it through reflection,I get nothing.
I am doing the following:
Class reqClass = Class.forName("javax.faces.component.html.HtmlInputText");
Method[] methodList = reqClass.getDeclaredMethods();
int methodIdx = 0;
for (int i = 0; i < methodList.length; i++) {
Method reqMethod =methodList[i];
if(reqMethod.getName().indexOf("getOn")== 0) //method starts with getOn

// method accepts parameters, define the types in order here as Class[]
Class[] classParams = new Class [] {};
// set the method of the class object
Method method = reqClass.getMethod( reqMethod.getName(), classParams );

// pass values to fill parameters of method
Object[] arguments = new Object [] {};
// invoke method via reflection.Note that class has default constructor
Object retobj=method.invoke( reqClass.newInstance() ,
arguments );

String getterResult = (String)retobj;

System.out.println(reqMethod.getName() + " ## " + getterResult);

What am i doing wrong while invoking the method through reflection.
I get no exception either.
Ernest Friedman-Hill
author and iconoclast

Joined: Jul 08, 2003
Posts: 24195

You're doing pretty much OK until this line:

Object retobj=method.invoke( reqClass.newInstance() , arguments );

Remember that the whole point was to invoke a method on "comp", yes? But here, where you've identified the method, you create a new instance of the same class as "comp", and call the method on this new instance; presumably the new instance returns "null" from the method you're calling. Pass "comp" instead of "reqClass.newInstance()" here, and I think you'll be fine.

[Jess in Action][AskingGoodQuestions]
Ranadhir Nag
Ranch Hand

Joined: Mar 09, 2006
Posts: 138
Perfect.Thanks a lot
I agree. Here's the link:
subject: Java reflection
It's not a secret anymore!