因为毕业设计的需要,接触到了VRML+EAI+JAVA编程。现有以下问题被困住,望大哥们帮帮我!String vrmlobj="VrmlEvent"。这里的"VrmlEvent"字符串有对应的一个同名的类,名为VrmlEvent,现需要调用这个VrmlEvent类的setValue(X)方法,但由于实际需要无法直接导入该类。
我本意是做如下操作:((VrmlEvent)EventInMFNodeObj).setValue(node);但是这个强制转化的类VrmlEvent并不直接可用,只是已知一个String类型的变量vrmlobj="VrmlEvent",
我该怎么将这个字符串vrmlobj的值"VrmlEvent"变成类名VrmlEvent并成功运用到上面的强制类型转化中去??
听说反射机制可以,但是我查阅了API文档好像还不能运用到强制类型转换方面,我是初学者,希望大家帮帮我。晚辈再此先谢过!

解决方案 »

  1.   

    Class yourClass=Class.forName("VrmlEvent");
    随后使用 newInstance等等方法 得到实例 然后再得到Method对象等
    最后使用Method类的invoke方法 即可详细内容请寻找java反射相关主题
      

  2.   

    反射不需要转换,你查过api了应该知道可以获得所有Method的方法,用这个Method直接去调就可以了
      

  3.   

    ((VrmlEvent)EventInMFNodeObj).setValue(node); 
    这里的EventInMFNodeObj对象对应的类是VrmlEvent类的父类,所以不强制转换不行吧?
      

  4.   

    ((VrmlEvent)EventInMFNodeObj).setValue(node); 
    用发射至少也要用到EventInMFNodeObj这个对象引用吧,没有它,直接反射就得不到我要的结果了...
      

  5.   


    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();
    }
    }
    }
    楼主感受一下