I'm not sure you can do this in a totally generic way. In general you make the following calls: - Class.forName(String name) to get a class from its full name (including its package); (you'll get a ClassNotFoundException if it doesn't have access to the required class type); - class.getConstructor(Object[] paramTypes) on the above class to get a constructor taking the appropriate arguments; - constructor.newInstance(Object[] args) to create an instance of the object.
The trouble is, you end up with an instance of Object, so if you want to pass this to some method which takes a more specific class as an argument, you still need to cast it to the appropriate class, which I don't think you can do without hardcoding the cast. If you *could* use the above approach, you would still need to treat primitives differently, probably by treating each type separately in an if/elseif statement. Someone else has suggested JAXB; I think with JAXB it just converts XML to specific class types which you must directly manipulate at runtime, so I don't think it solves your specific problem. Al. -----Original Message----- From: Jeff Fisher [mailto:[EMAIL PROTECTED]] Sent: 12 September 2002 15:37 To: JDJList Subject: [jdjlist] RE: Determine type from text Ok, let me refraise what I need to do. I know what the types are for the parameters by the xml doc or by the getParameterTypes method. The question now becomes, how do I convert the values of the parameters from the xml file into the correct types so I can pass those to the method. This is where I'm having problems. For example: I need to somehow take the string 100 and create the correct method argument (an int) without knowing ahead of time that the param is an int. The code that has to do this has no intrinsic knowledge of the method being called. -----Original Message----- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]] Sent: Thursday, September 12, 2002 10:13 AM To: JDJList Subject: [jdjlist] RE: Determine type from text Jeff, I am not sure if your question is regarding whether or not an object can be represented using XML or if you are trying to find out the types of the parameters of a method. I will assume the second. If I am wrong, so sorry:) Since you have already looked at reflection, did you try the java.lang.reflect.Method.getParameterTypes()? This returns an array containing one class object for each of the method's parameters. Chikeobi O. Njaka -----Original Message----- From: Jeff Fisher [mailto:[EMAIL PROTECTED]] Sent: Thursday, September 12, 2002 5:51 AM To: JDJList Subject: [jdjlist] Determine type from text Given the following xml file: <?xml version="1.0"?> <ServiceRequest> <Service> com.emerywaterhouse.websvc.FrtCalc </Service> <Method> getFreightCharge </Method> <Param> <Type> String </Type> <Value> UPSG </Value> </Param> <Param> <Type> String </Type> <Value> 04104 </Value> </Param> <Param> <Type> int </Type> <Value> 100 </Value> </Param> </ServiceRequest> Using reflection I can create the class, and call the method. The only problem is determining and converting the parameters to the correct type. I suppose I can use a brute force method and have a large number of if else statements, but that doesn't seem viable. Also, if the parameter is an object, I'll never be able to code for all possible objects. I've looked through a number of resources, but nothing I've seen has examples of determining the types for parameters. Does anyone have a suggestion here or a resource I can look at. TIA Jeff To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm Information contained in this email message is intended only for use of the individual or entity named above. If the reader of this message is not the intended recipient, or the employee or agent responsible to deliver it to the intended recipient, you are hereby notified that any dissemination, distribution or copying of this communication is strictly prohibited. If you have received this communication in error, please immediately notify the [EMAIL PROTECTED] and destroy the original message. To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm To change your JDJList options, please visit: http://www.sys-con.com/java/list.cfm
