java中如何实现由类名动态创建对象

最好附上示例代码

  首先用 Class.forName(完整类名)获得一个Class对象clazz,然后调用Class对象clazz的newInstance()方法得到一个对象。例如:

package kown.reflect;
public class ReflectTest
{
    public static void main(String[] args)
    {
        try
        {
            Class<?> clazz = Class.forName("kown.reflect.Show");
            Show show = (Show) clazz.newInstance();
            show.test();
        } catch (ClassNotFoundException e)
        {
            e.printStackTrace();
        } catch (InstantiationException e)
        {
            e.printStackTrace();
        } catch (IllegalAccessException e)
        {
            e.printStackTrace();
        }
    }
}
class Show
{
    public void test()
    {
        System.out.println("hello world!");
    }
}

  其中"kown.reflect.Show"是完整类名,就是包名加类的名字。

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-09-09
*******************************************************************
新建类DynamicCreateObject.java,具体代码如下(动态创建对象已加注释):
*******************************************************************

public class DynamicCreateObject {

public static void main(String[] args) {
try {
Student stu = (Student) (Class.forName("Student").newInstance()); //由类名动态创建对象
stu.setName("Godwin");
stu.setGender("male");
System.out.println("姓名:" + stu.getName() + ", 性别:"
+ stu.getGender());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

}

class Student {
String name;
String gender;

public Student() {
}

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public String getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}
}

*******************************************************************
运行结果如下:
*******************************************************************

姓名:Godwin, 性别:male本回答被提问者采纳
第2个回答  2010-05-16
Class.forName("类的全名").newInstance();
类的全名:就是指该类的包名加上类名;forName返回与带有给定字符串名的类或接口相关联的 Class 对象;newInstance创建此 Class 对象所表示的类的一个新实例
第3个回答  2010-05-16
用反射机制,Struts就是基于这个原理!
第4个回答  2010-05-16
用反射API啊 很容易的