5个回答
展开全部
首先用 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"是完整类名,就是包名加类的名字。
展开全部
*******************************************************************
新建类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
新建类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
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Class.forName("类的全名").newInstance();
类的全名:就是指该类的包名加上类名;forName返回与带有给定字符串名的类或接口相关联的 Class 对象;newInstance创建此 Class 对象所表示的类的一个新实例
类的全名:就是指该类的包名加上类名;forName返回与带有给定字符串名的类或接口相关联的 Class 对象;newInstance创建此 Class 对象所表示的类的一个新实例
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用反射机制,Struts就是基于这个原理!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用反射API啊 很容易的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询