aspose file tools*
The moose likes Java in General and the fly likes Calling a reflection class method. Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Java in General
Bookmark "Calling a reflection class method." Watch "Calling a reflection class method." New topic
Author

Calling a reflection class method.

Alan Blass
Ranch Hand

Joined: Mar 21, 2010
Posts: 119
Hi!

I am trying to call a reflection class method:



But I am getting an error for line 4. It says "cannot find symbol" for myObject. I think line 3 is wrong. It should not be Object.

Please give me some pointers. Thanks
T Mishra
Ranch Hand

Joined: Apr 04, 2006
Posts: 108

myclass should be title case. e.g. MyClass. Check Java Coding Conventions
Line 4 - You're trying to get a method defined in MyClass using myObject.
but At line 3 - The datatype of myObject is Object instead of MyClass.


Thanks,
Tushar (SCJP 1.5)
Campbell Ritchie
Sheriff

Joined: Oct 13, 2005
Posts: 38353
    
  23
Why are you casting that returnedobject to Object? I presume Object means java.lang.Object. You should keep the reference as ??MyClass??.
Alan Blass
Ranch Hand

Joined: Mar 21, 2010
Posts: 119
Errrr....so line 4 should read:



?
Steve Luke
Bartender

Joined: Jan 28, 2003
Posts: 4174
    
  21

Alan Blass wrote:Errrr....so line 4 should read:



?


No. If you could reference com.mycom.MyClass you wouldn't be using reflection, would you? You would just create the object normally. The problem is the instance (myObject) doesn't hold references to the Methods, the class does. So you need to get a reference to the Class object. You try that using myObject.class but that won't work, because Object does not have a publicly accessible member called class. You could get the class Object using myObject.getClass() because Object does have an accessible getClass() method. But you don't need to: you already have the Class object Class c.

So use:

And if the method is not a static method then line 5 will fail. You need to pass it two things (based on the method signature): 1: the instance myObject, on which the method will be executed and 2: a String parameter.


Steve
Alan Blass
Ranch Hand

Joined: Mar 21, 2010
Posts: 119
Ok, so it is like this:

Steve Luke
Bartender

Joined: Jan 28, 2003
Posts: 4174
    
  21

Yes, assuming the method signatures are all correct. Just as a note: Life becomes a lot easier with Reflection when you can cast the Object to a known type. So you may not know about the specific com.whatever.MyClass, but if MyClass implements com.somethingcommon.Worker and you know about the Worker interface you can do:
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Calling a reflection class method.