因为毕业设计的需要,接触到了VRML+EAI+JAVA编程。现有以下问题被困住,望大哥们帮帮我!String vrmlobj="VrmlEvent"。这里的"VrmlEvent"字符串有对应的一个同名的类,名为VrmlEvent,现需要调用这个VrmlEvent类的setValue(X)方法,但由于实际需要无法直接导入该类。
我本意是做如下操作:((VrmlEvent)EventInMFNodeObj).setValue(node);但是这个强制转化的类VrmlEvent并不直接可用,只是已知一个String类型的变量vrmlobj="VrmlEvent",
我该怎么将这个字符串vrmlobj的值"VrmlEvent"变成类名VrmlEvent并成功运用到上面的强制类型转化中去??
听说反射机制可以,但是我查阅了API文档好像还不能运用到强制类型转换方面,我是初学者,希望大家帮帮我。晚辈再此先谢过!
我本意是做如下操作:((VrmlEvent)EventInMFNodeObj).setValue(node);但是这个强制转化的类VrmlEvent并不直接可用,只是已知一个String类型的变量vrmlobj="VrmlEvent",
我该怎么将这个字符串vrmlobj的值"VrmlEvent"变成类名VrmlEvent并成功运用到上面的强制类型转化中去??
听说反射机制可以,但是我查阅了API文档好像还不能运用到强制类型转换方面,我是初学者,希望大家帮帮我。晚辈再此先谢过!
随后使用 newInstance等等方法 得到实例 然后再得到Method对象等
最后使用Method类的invoke方法 即可详细内容请寻找java反射相关主题
这里的EventInMFNodeObj对象对应的类是VrmlEvent类的父类,所以不强制转换不行吧?
用发射至少也要用到EventInMFNodeObj这个对象引用吧,没有它,直接反射就得不到我要的结果了...
package com.evaluation;import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;public class TestReflect {
public static void main(String[] args) {
Object o="this is a string object";
System.out.println(((String)o).substring(5));
try {
Method substringMethod=o.getClass().getMethod("substring",int.class);
System.out.println(substringMethod.invoke(o, new Object[]{5}));
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
楼主感受一下