java中可以通过一个字符串找到一个类并为这个类创建实例,但是这个实例用什么东西来接收呢?
比如一个字符串String str="java.lang.Math";Class cl=Class.forName(str);cl.newInstance();//此处创建了实例,但是在没有确定返回类型的情况下,如何通过反射产生一个变量指针来接收这个实例呢?显然用
Math m=(Math)cl.newInstance();是缺乏移植性的,求教各位知道答案的大虾指点下

解决方案 »

  1.   

    Math m=(Math)cl.newInstance();是缺乏移植性的lz,为什么这个缺乏移植性啊??能不能说一说,谢谢了!
      

  2.   

    上面那个Math是手动添加的,要是传入的字符串是未知的呢?
      

  3.   

    捕获一下这个异常classcastexception
      

  4.   

    我的意思就是仅仅给你一个字符串,要求动态产生一个该字符串对应的变量,而不仅仅是实例:public Object ref(String str)
    {
        Class cl=Class.forName(str);
        变量类型  var=cl.newInstance();
    }
    现在需要的是用反射通过str确定的“变量类型”
      

  5.   

    用Object接收既然是动态生成的,那接下来使用这个对象的时候也不可能硬编码地调用它的方法,所以要求接收这个对象的引用是它的实际类型无意义,举例来说,假设真的可以实现创建了一个Math类型的引用,接下来也不可能使用m.sin(...)这种形式来调用方法,所以你只需要使用Object来接收这个对象,通过反射获得方法信息以后使用invokeMethod来调用