public static void main(String args[]) {
    User u = new User();
    method1(u,User.class);
    method2(u,"User");
}public static void method1(Object o, Class cl) {
   //根据cl可以将o转换为User对象吗?
}
public static void method2(Object o, String className) {
   //根据className可以将o转换为User对象吗?
}

解决方案 »

  1.   

    我知道用String可以得到class,所以其实是一个问题
    public static void method2(Object o, String className) {
       //根据className可以将o转换为User对象吗?
    try {
    Class c = Class.forName(className);
    method1(o,c);
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    }
    }
    这个问题我就不明白了
      

  2.   

    完全没有意义!User u; 这样定义以后,u就永远是User类型的了,不可能变成别的类型。
      

  3.   

    to:反射也不可以解决编译期运行期问题吗?to:
    用处一:
    现假设方法变为:
    public static method1(User u, Class cl) {
    //
    }
    那么,在method1(u, User.class)中我可以用反射调用u对象里的所有以get开头的方法,然后将得到的不为空的
    值拼成insert 或 update的sql串。当然你会说用hibernate就可以了,但这里需要得到sql语句,然后保存起来。
    现在问题是,我想做得灵活些,将参数1改为Object的然后转成真实对象。
      

  4.   

    所以,你还没有理解User u;这个是编译期
    反射运行是运行期。哪怕编译期的类型是Object,只要它真的是User或其子类,你照样能调用其属性方法。何须把编译期的类型给转了。