看看我回的帖子
http://community.csdn.net/Expert/topic/3209/3209537.xml?temp=.7294275

解决方案 »

  1.   

    利用 reflection
    try {
        Class.forName("java.lang.Object");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }
    没有找到自动抛出异常
      

  2.   

    Class clazz;
    Object instance;
            
    try {
        // 如果没有自动抛异常
        clazz = Class.forName("java.lang.Object");
        instance = clazz.newInstance();
    } catch (ClassNotFoundException e) {
        e.printStackTrace();
    }这个方法只能使用默认构造函数(而且被调用类必须有无参构造函数)
    如果想要使用带参的构造函数就麻烦很多import java.lang.reflect.*public static void main(String args[]) {
            Class clazz;
            Class[] param;
            Constructor[] con;
            Object instance;        try {
                clazz = Class.forName("java.lang.String");
                con = clazz.getConstructors();
                for (int i = 0; i < con.length; i++) {
                    param = con[i].getParameterTypes();
                    for (int j = 0; j < param.length; j++) {
                        if (param[j] == String.class && param.length == 1) {
                            instance = con[i].newInstance(new String[]{"Hello World!",});
                            System.out.println((String) instance);
                        }
                    }
                }
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IllegalAccessException e) {
                e.printStackTrace();
            } catch (InvocationTargetException e) {
                e.printStackTrace();
            } catch (InstantiationException e) {
                e.printStackTrace();
            }
        }上面只是一个例子,真正用起来可能更麻烦,但是 reflection 功能绝对够强
      

  3.   

    首先对于第一个问题:判断是否有此包(类)的存在
    因为jvm导入类时有至少三个步骤:
    1。先从引导类装载器载入(rt.jar)
    2。从扩展类装载器载入(jre/lib/ext/)
    3。从系统类装载器载入(classpath)
    如果需要动态载入类,应该:
    ClassLoader.getSystemClassLoader方法获得系统加载类器。当然这个有问题。最好使用下面的代码:
    Thread t = Thread.currentThread();
    ClassLoader loader = t.getContextClassLoader();
    Class c = loader.loadClass( className );//如果没找到会抛出异常ClassNotFoundException,你可以捕捉它,执行你的需要的功能第二个问题:导入类
    那就扩展ClassLoader,编写自己的类装载器!
    但不管如何,你总要知道你想导入的类或包的具体位置的!