2008-06-30
java反射机制
关键字: java 反射机制
java反射机制测试
package com.infowarelab.java.test;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
public class ReflectTester {
@SuppressWarnings("unchecked")
public Object copy(Object object) throws Exception {
// 获得对象类型
Class classType = object.getClass();
System.out.println("" + classType.getName()); // 通过默认构造方法创建一个新的对象
Object objectCopy = classType.getConstructor(new Class[] {})
.newInstance(new Object[] {}); // 获得对象的所有属性
Field fields[] = classType.getDeclaredFields();
for (int i = 0; i < fields.length; i++) {
Field field = fields[i];
String fieldName = field.getName();
String firstLetter = fieldName.substring(0, 1).toUpperCase(); // 获得和属性对应的getXXX()方法的名字
String getMethodName = "get" + firstLetter + fieldName.substring(1); // 获得和属性对应的setXXX()方法的名字
String setMethodName = "set" + firstLetter + fieldName.substring(1); // 获得和属性对应的getXXX()方法
Method getMethod = classType.getMethod(getMethodName,
new Class[] {}); // 获得和属性对应的setXXX()方法
Method setMethod = classType.getMethod(setMethodName,
new Class[] { field.getType() }); // 调用原对象的getXXX()方法
Object value = getMethod.invoke(object, new Object[] {});
System.out.println(fieldName + ":" + value); // 调用拷贝对象的setXXX()方法
setMethod.invoke(objectCopy, new Object[] { value });
}
return objectCopy;
}
public static void main(String[] args) throws Exception {
Customer customer = new Customer("lunzi", 26);
customer.setId(new Long(1));
Customer customerCopy = (Customer) new ReflectTester().copy(customer);
System.out.println("Copy information:" + customerCopy.getName() + " "
+ customerCopy.getAge());
}
}
class Customer {
private long id;
private String name;
private int age;
public Customer() {
}
public Customer(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
}
发表评论
- 浏览: 9751 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
expanding_universe_1400x904
共 20 张
共 20 张
最近加入圈子
链接
- 设计模式
- robbin
- shakira Suerte
- 10个寓言故事
- 面向对象编程五大原则
- cicada-it
- lucene专栏
- 自定义的JS对话框
- jbpm
- jbpm2
- 实战web 2.0
- 34
- 大型WEB系统的架构设计和技术选型
- davexin
- 25个优秀的Ajax技术和实例
- JBoss企业级应用服务平台群集指南
- http://www.zhuoda.org/lunzi/dir_7674.html
- groovyland
- http://ahuaxuan.javaeye.com/
- http://leeon.javaeye.com/category/18773
- 江南白衣
- The Google Chart API
- 2008聪明老板的“经营秘诀"
- 您企业的品牌视觉印象个性鲜明吗?
最新评论
-
升级Spring 2.5注意事项
楼上这也行? 不过分析的很好!东西一比较 就有其意味了
-- by dhxyu -
升级Spring 2.5注意事项
全世界的人都知道这是参考手册里面,难道不能帖这里吗?!
-- by weidewei -
升级Spring 2.5注意事项
晕,这个不是中文参考手册里的内容吗
-- by kjj -
java中四种操作(DOM、SA ...
这篇文章好像出来很多年了吧。。google一下,满世界都是
-- by vampire423 -
Lucene 入门与实战
30,31行代码中: document.add(Field.Text("path ...
-- by txxg






评论排行榜