现在我在前台已经通过User这个字符串  拿到 com.dto.User 这个地址  然后反射成obj
那我后台判断时候 怎么实例化出来??  怎么动态的实例化这个obj    就如后台使用这个obj  (User)obj  强转后使用。。 问题是  我现在知道的User字符串  总不能使用("User")obj  这样强转吧  (肯定不行的- - )求各位达达给思路或解决方案!!

解决方案 »

  1.   

    User user =  (User)Class.forName("com.dto.User").newInstance() ;
      

  2.   

    这个obj就是实例化的一个User对象了
    如果后台程序有import User,那么就直接转换User u = (User)obj 
    如果没有,那就继续用反射的方式访问obj的方法或属性
      

  3.   

    或者是 反射针对这个方面 有另一套的解决方案??既然能得到这个类的OBJ  那么总有一套方案 能动态自动的根据这个  实例化出来这个类吧 
      

  4.   

    不是这个意思我说的是后台自动转换
    就像2L这样的
    User user = (User)Class.forName("com.dto.User").newInstance() ;
    我现在知道的条件 只有 "com.dto.User"   怎么在非手动的情况下 做到上面的步骤??
      

  5.   

    不是我知道的- -  是程序知道的条件 只有com.dto.User
      

  6.   

    String s = "com.dto.User";
    Class c = Class.forName(s);
    Object obj = c.newInstance();
    Method m = c.getDeclaredMethod("XX", [yy]); 
    m.setAccessible(true);
    m.invoke(obj);
      

  7.   

    不转化成User的话,就像楼上那样用就得了
      

  8.   


    package com.reflect.xb;public class ScreenPrint { public void print(String str){
    System.out.println("JAVA EE"+str);
    }}
    import java.lang.reflect.InvocationTargetException;
    import java.lang.reflect.Method;public class ScreenPrintTest { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO Auto-generated method stub try {
    Class c = Thread.currentThread().getContextClassLoader().loadClass("com.reflect.xb.ScreenPrint");
    if(c==null){
    c = Class.forName("com.reflect.xb.ScreenPrint");
    }
    Object obj = c.newInstance();
    Method mPrint = c.getMethod("print",String.class);
    mPrint.invoke(obj, " hello ");


    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } 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 (InvocationTargetException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }}以前照搬的代码,看看有帮助没