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

最好附上示例代码... 最好附上示例代码 展开
 我来答
一数一道
推荐于2017-09-18 · TA获得超过1751个赞
知道小有建树答主
回答量:369
采纳率:75%
帮助的人:215万
展开全部

  首先用 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"是完整类名,就是包名加类的名字。

godwin668
推荐于2017-09-09 · TA获得超过367个赞
知道小有建树答主
回答量:135
采纳率:0%
帮助的人:180万
展开全部
*******************************************************************
新建类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
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
river9113
2010-05-16 · TA获得超过147个赞
知道答主
回答量:37
采纳率:0%
帮助的人:0
展开全部
Class.forName("类的全名").newInstance();
类的全名:就是指该类的包名加上类名;forName返回与带有给定字符串名的类或接口相关联的 Class 对象;newInstance创建此 Class 对象所表示的类的一个新实例
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
t6116784
2010-05-16 · TA获得超过148个赞
知道答主
回答量:482
采纳率:0%
帮助的人:223万
展开全部
用反射机制,Struts就是基于这个原理!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
扒扒组
2010-05-16 · TA获得超过176个赞
知道答主
回答量:135
采纳率:0%
帮助的人:72.3万
展开全部
用反射API啊 很容易的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式