我最近在看反射,我现在很疑惑,就是我们利用反射可以动态获得一个类的对象,但是这个对象是属于OBject类型的对象,如何把这个对象动态强制转换成相应类型呢?
下面是我写的代码,我的问题在注释中.
public class TestReflect {
public static void main(String args[])  throws Exception{
Object a = Class.forName("A").newInstance();

A tempa = (A) a;  //如何动态的将a 这个对象转换为A这个类型?

tempa.print();
}
}class A {


public void print() {
System.out.println("hello,world");
}
}

解决方案 »

  1.   

    你这样写就可以啦,除了就是class A因为不是Public的,所以必须和TestRelect同一个包中
      

  2.   

    可能你没有明白我的意思,我再改一下: 
            public static void main(String args[])  throws Exception{
    Object a = Class.forName( args[1] ).newInstance();

    //?? 那么在这一行如何根据args[1] 中的内容 强制转换对象a ?
    }
      

  3.   

    参考
    http://blog.csdn.net/kingfish/archive/2005/03/23/328004.aspx
      

  4.   

    public static void main(String args[])  throws Exception{
                      
                      String datatype = "XX"; //datatype的内容是可能变化的
     
    Object a = Class.forName( datatype  ).newInstance();

    //?? 那么在这一行如何根据datatype  中的内容 强制转换对象a ?
                      //因为这时候 datatype 的内容是可以变化的
                      //那么简单的用 A tempa = (A) a; 是不够的。
    }
      

  5.   

    我不太明白你的需求,你直接转换成一个args[0]的类是不行的
    但是如果你需要,你可以根据它的Class通过反射机制去获得方法来执行又或者最常用的是定义一个Interface来列举需要的方法
      

  6.   

    看来不能直接通过字符串的内容进行强制类型转换。 这只是我在看反射时想到的一个问题。
    也许Java中并不需要这样的功能。
      

  7.   

    Java中并不需要这样的功能...同意!!!